var d:Dictionary = new Dictionary();
d["A"] = true;
d["B"] = true;
d["C"] = true;
d["D"] = true;
d["E"] = true;
d["F"] = true;
for(var n:String in d){
//d[n] = false;
trace(n)
}
trace(d["D"]) // ?
結果:BDFACE
D = true
コメントを外して再度コンパイル
D = true
結果:BAEBFC
D = true
Bふたつありますか。Dさんは、どこへ行きましたか。
ちなみにDictionaryじゃなくても、ArrayでもObjectでも同じ。
D = true
で、色々試しました。
とりあえず、"B"を"b"と小文字にしました。
意味がわかりません。
さらに、
var d:Object= new Object();
d["A"] = true;
d["b"] = true;
d["C"] = true;
d["D"] = true;
d["E"] = true;
d["F"] = true;
for(var n:String in d){
d[n] = false;
trace(n)
}
trace(d["D"]) // ?
結果:bAEDFC
D = false
正しいじゃないか。D = false
意味がわかりません。
さらに、
var d:Object = {"A":true,"B":true,"C":true,"D":true,"E":true,"F":true};
for(var n:String in d){
d[n] = false;
trace(n)
}
trace(d["D"]) // ?
結果:DEAFBC
D = false
正しいじゃないか。
D = false
なんなんだろうか。
それから、as2では当然この症状は出ません。
For in bug ?