Цикл foreach AS3: направление гарантируется?

Есть несколько способов справиться с этим.

Вы можете использовать «руководство» для цикла:

for (int i = 0; i < number; ++i) {...

... и затем рассматривать случай, когда i + 1 == number.length, как особый случай.

Вы также можете использовать IntStream , отобразить это на Stream, используя mapToObj, а затем собрать этот поток, используя Collectors.joining(",") :

[111 ]

Но, вероятно, самый простой способ - использовать Arrays.toString(int[]) . Это создаст строку с пробелом после каждой запятой, но затем вы можете сделать replaceAll(" ", ""), чтобы удалить это.

13
задан BefittingTheorem 6 March 2009 в 14:47
поделиться

3 ответа

Вы имеете в виду for (x in y) тип цикла foreach? Спецификация AS3 говорит, что для циклов "имеют тот же синтаксис и семантику, как определено в выпуске 3 и E4X ECMA-262".

ECMA-262, разделите 12.6.4 состояний, что "порядок перечисления определяется объектом" - другими словами, это будет зависеть от того, выполняете ли Вы итерации через список, словарь, массив и т.д.

Я надеялся бы, что документация для большинства наборов явно укажет порядок перечисления (или что порядок не определяется), но я не проверил...

Править: К сожалению, спецификации указывают, что "механика перечисления свойств [...] является зависящей от реализации". Я ничего не вижу в документах Массива для определения упорядочивания. Это немного неудовлетворительно, чтобы быть честным :(

5
ответ дан 2 December 2019 в 00:19
поделиться

Как указано в Существенном Actionscript 3.0 Colin Moock, порядок для каждого в цикле не гарантируется если, перечисляя XML или объект XMLList;

Щелкните здесь для слов Colin Moock из его книги.

Существуют обходные решения, как обсуждено здесь, но честно если необходимо гарантировать, порядок затем просто использует постоянного клиента, старого для цикла, и имеет его, выполняют итерации (длина, numChildren, и т.д.) количества раз.

8
ответ дан 2 December 2019 в 00:19
поделиться

Порядок оценки, измененной в AS3.0 Ранее, в AS 1.0 и 2.0, порядок оценки был основан на порядке, в котором были добавлены объекты. Теперь, в 3,0, все цикличное выполнение поддерживает заказ массива. Попробуйте отрывок:

var a:Array = new Array();
a[ 1 ] = 'first';
a[ 0 ] = 'second';

for (var key:String in a) 
    trace( key + ': ' + a[ key ] );

Попробуйте вышеупомянутое AS3.0 и AS1.0/2.0

2
ответ дан 2 December 2019 в 00:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: