AS3.0のfor eachの順序に依存しないように注意

ASから他言語移植するときのバグにもなりやすいし for eachとfor iは使い分けましょう。 たぶん、他の言語でも似たような話だと思う。
1
尾野(しっぽ) @tail_y

AS3.0のfor each文って、順序が定義されてないんだっけ?確か。

2012-01-16 04:01:58
尾野(しっぽ) @tail_y

それとも、ArrayとVectorについては順序確定でいいの?実際の動作というよりは定義的に。

2012-01-16 04:03:59
cellfusion @cellfusion

@tail_y 定義的には for each とかだと保証されてないはずだけど動作的にはなんか固定な気がする

2012-01-16 04:08:39
尾野(しっぽ) @tail_y

@cellfusion Adobe的にも多分いまさら非固定にはできなさそうだけど、神経質にやるなら順序が必要なのは、for var i:int = 0~でやるべきですかねぇ。

2012-01-16 04:24:57
cellfusion @cellfusion

@tail_y 順番を保証したいなら for i でやる方がいいと思うよー。自分は必ずそうしてる。

2012-01-16 04:25:46
野中 文雄 @FumioNonaka

@cellfusion @tail_y E4Xでは「列挙の順番はオブジェクトにより定義される」ことになっていますね。 http://t.co/1EIOG3j5 普通インデックス順に定義するでしょうけど。ただ、その仕様を公開していないので、保証しないといわれそうな気がします

2012-01-16 04:26:21
cellfusion @cellfusion

@FumioNonaka @tail_y なんか昔は逆順になったりしてた気もするんですけど最近はそんなこともないのでよくわからないので、信用するのは怖いですねー。

2012-01-16 04:27:47
尾野(しっぽ) @tail_y

@cellfusion 確かになんかfor eachだか、for in文を利用した、逆順コードってあったような。

2012-01-16 04:31:31
尾野(しっぽ) @tail_y

Adobeのマニュアルも、ハッシュの順序については非定義であると書かれてるけど、配列に関してはまったく記述が無いんだよね。これ意外と落とし穴だよね。for each大好きな人多そう。

2012-01-16 04:29:56
尾野(しっぽ) @tail_y

for each大好きな人は、iを定義しなくていいからだと思うので、ASには、iを定義しないけど順序が保証されるfor文が欲しいなと思いつつ、すでに5種類くらいあるループ構文に更に足すのかって感じもする。

2012-01-16 04:31:00