当前位置:  开发笔记 > 编程语言 > 正文

For-Each Loop AS3:方向是否有保证?

如何解决《For-EachLoopAS3:方向是否有保证?》经验,为你挑选了2个好方法。

我想知道for-each和for-in循环中AS3中的Array,Dictionary和Object类型的迭代顺序.还有哪些因素可以改变这些循环类型组合的迭代顺序?

例如,我假设在Array类型上使用for-each总是从第一个元素移动到最后一个元素.For-each不能在Dictionary上使用,那么如何使用for-in循环确定顺序?



1> Brian Hodge..:

正如Colin Moock在Essential Actionscript 3.0中所述,除非枚举XML或XMLList对象,否则无法保证每个in循环的顺序;

点击这里查看Colin Moock的书中的话.

有作为讨论解决方法在这里,但说实话,如果你需要保证顺序,然后只需使用一个普通的旧的循环,并有它遍历(长度,numChildren的,等等)的次数.


说实话,如果没有理由,我对这句话感到非常不舒服.并不是说我认为这是错误的,但它背后没有任何逻辑或推理(很可能是由于编辑).我对内部机制感兴趣,为什么每个循环都不能保证数组的顺序

2> Jon Skeet..:

你的意思是for (x in y)每个循环的类型?AS3规范说for for"具有与ECMA-262 edition 3和E4X中定义的相同的语法和语义".

ECMA-262第12.6.4节规定"枚举的顺序是由对象定义的" - 换句话说,它取决于你是在迭代列表,字典,数组等.

希望大多数集合的文档将明确说明枚举顺序(或者未定义顺序),但我没有检查过......

编辑:不幸的是,规范声明"枚举属性[...]的机制是依赖于实现的." 我在Array文档中看不到任何指定顺序的内容.说实话,这有点令人不满意:(

推荐阅读
落单鸟人
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有