アプリ版:「スタンプのみでお礼する」機能のリリースについて

AS3.0ですが、下記2つのコードの違いがわかりません。。

↓こちらのコードは undefined になるのですが、
---------------------------------
var box:Array = new Array();

for(var j=0; j<1; j++){
for(var i=0; i<10; i++){
box[j] = new Array();
box[j][i] = i+j;

}
}

trace(box[0][0]);
-----------------------------------


↓こちらのコードは値をとることが出来ます。
-----------------------------------
var box:Array = new Array();

for(var k=0; k<10; k++){
box[k] = new Array();
}

for(var j=0; j<1; j++){
for(var i=0; i<10; i++){
box[j][i] = i+j;

}
}

trace(box[0][1]);
-----------------------------------

どういう理由で、値が取れるのでしょうか?
よろしくお願いいたします。

A 回答 (2件)

> つまり、配列の宣言と値の代入は


> 分けて書くしかないのでしょうか?


普通に次のようにすれば良いと思います。

--------------------------------
var box:Array = new Array();

for (var j=0; j<1; j++) {
box[j] = new Array();
for (var i=0; i<10; i++) {
box[j][i] = i + j;
}
}

trace(box[0][1]);
--------------------------------
 
    • good
    • 0

ループをアンロールして考えると分かりやすいかも。


最初のコードはこんな動きをする:

box[0]=new Array; box[0][0]=0;
box[0]=new Array; box[0][1]=1;
box[0]=new Array; box[0][2]=2;

次のコードは以下の動きをします:

box[0]=new Array;box[1]=new Array;box[2]=new Array;
box[0][0]=0;
box[0][1]=1;
box[0][2]=2;

なので前のがundefになるのは確定的にあきらか。

参考URL:http://yougo.ascii.jp/caltar/%E3%83%AB%E3%83%BC% …

この回答への補足

なんとなくわかる気がしますが。。
つまり、配列の宣言と値の代入は分けて書くしかないのでしょうか?

補足日時:2010/05/07 23:07
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!