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 件のコメント:
コメントを投稿