Actionscript trace Функция (в любых версиях ActionScript) - это большой позор.
Просто попробуйте посмеяться:
var a :Array = [1,2,3];
var b :Array = [4,5,6, a];
a[3] = b;
trace(a);
Функция не стыдного следа должна действительно зацикливаться на элементах массива и трассировать массивы внутри массивов, как это делает функция AS3 trace . Но он также должен проверять циклические ссылки между внутренним и родительским массивами внутри корневого массива, который отслеживается. Это может быть реализовано рекурсивным или итеративным способом.
Если вы не согласны с тем, что функция AS3 trace плохая, также учтите тот факт, что эта функция не позволит вам увидеть, содержится ли массив в другом. Я имею в виду, что этот код:
var a :Array = [1,2,3];
var b :Array = [a, 4,5,6];
trace(b);
выведет это:
1,2,3,4,5,6
хотя мы могли бы ожидать такой вывод:
[1,2,3],4,5,6
И, наконец, если у вас есть нулевые или неопределенные значения внутри ваших массивов, они будут отслеживаться как пустые строки:
var a :Array = [1,2,undefined,3];
var b :Array = [4,5,6, null, a];
trace(b);
выведет это:
4,5,6,,1,2,,3
... !!! ...