2013年3月18日月曜日

foreachで使用した変数は元に戻る

Perlでは、foreachループで使用した変数は自動的に元の値に戻ります。

例えば、


@strings = qw(neko inu tori);
$str = "empty";
foreach $str(@strings) {
print "str=$str\n";
}
print "str=$str\n"; # ループ内の変更は保持されない



結果は以下のようになります。


str=neko
str=inu
str=tori
str=empty


$strの値はループ内で変更されますが、ループを抜けると元の値に戻っています。

当たり前ですが、for文ではこのようなことはありません。
念のためfor文のループ処理も書いておきます。


@strings = qw(neko inu tori);

$count = 0;
$str = "empty";
for($count=0 ; $count < scalar(@strings) ; $count++) {
$str = $strings[$count];
print "str=$str\n";
}
print "count=$count\n"; # ループ内の変更が反映される
print "str=$str\n"; # ループ内の変更が反映される




結果は以下のようになります。


str=neko
str=inu
str=tori
count=3
str=tori



for文のループ内で変更された$strと$countの値は、ループを抜けても最後に格納された値が反映されています。(自動的に元には戻りません。)


0 件のコメント:

コメントを投稿