配列は数を指定しないで、$aaa[]とうい形で指定することができるし、それに代入することができる。
しかしながらその配列にすでにいくつかの値が格納されている状況でさらに追加する場合は、同じ記述でよいのか?とふと疑問に思った。
ヘルプを見ても、書かれていないので、ちょっとテストしてみることにした。
{
string $aaa[] = `ls -sl`;
print $aaa;
string $aaa[] = `ls -sl`;
for ($i=0; $i<10;>
print ("$aaa["+$i+"]"+ "=" + $aaa[$i]+"\n");
}
}
5つのロケータを作り、選択後、このスクリプトを実行した。
選択したオブジェクトを$aaaに読み込んでprintにより配列全体の値を表示。
もう一度、同じ手順を繰り返し、今度は$aaaのどの値が表示されているのかをわかるようにした。
同じ事を二回繰り返しているわけだが、
もし二回目に値を格納するとき、それまでの配列の値の最後尾から継続されて格納されるのであれば
配列の番号と一緒に値が表示されるときに、配列[9]までの合計10の値が表示されるはず。
しかもlocator1から5までが二回繰り返されて表示されるはず。
しかしながら結果は以下のようになった。
locator1
locator2
locator3
locator4
locator5
$aaa[0]=locator1
$aaa[1]=locator2
$aaa[2]=locator3
$aaa[3]=locator4
$aaa[4]=locator5
$aaa[5]=
$aaa[6]=
$aaa[7]=
$aaa[8]=
$aaa[9]=
最初の$aaa[n]の表記がない部分は二行目のprint文で出力された値
$aaa[n]の表記がある部分は5行目のprint文で出力された値
みてわかるように配列$aaa[5]~$aaa[9]には値がない。
ようするに$aaa[0]~$aaa[4]までが上書きされていることになる。
通常の変数と同じようになっているということだ。
ではどうすればよいのか?
0 件のコメント:
コメントを投稿