use feature 'say';
@arr = (1,2,3,4,5,6);
for $x (@arr)
{
print $x;
@arr = (6,5,4,3,2,1) if $x == 3;
}
のために、アレイの再評価を停止するには、perlは出力を生成します:perlの再評価ループ内の配列を停止する方法はあり123321
がどのように上記のコードではループ
をするように出力は代わりに123456
ですか?
use feature 'say';
@arr = (1,2,3,4,5,6);
for $x (@arr)
{
print $x;
@arr = (6,5,4,3,2,1) if $x == 3;
}
のために、アレイの再評価を停止するには、perlは出力を生成します:perlの再評価ループ内の配列を停止する方法はあり123321
がどのように上記のコードではループ
をするように出力は代わりに123456
ですか?
オーバー
@ary = 1..6;
for $x (eval { @ary })
{
print $x;
@ary = (6,5,4,3,2,1);
} # --> 123456
を反復するために、リストを生成し、私は、これは好奇心や実験であることを期待しますが、私はまだコメントしてみましょう:その背後にある現実的な目標がある場合はより良い方法は確かにあります。
アレイを再割り当てしてループを終了する場合は、最後のコマンドを使用することをお勧めします。最後のコマンドはすぐにループを終了します。
use feature 'say';
@arr = (1,2,3,4,5,6);
for $x (@arr)
{
print $x;
if (3 == $x)
{
@arr = (6,5,4,3,2,1);
last;
}
}
次に、@arrは割り当てられた配列になり、評価されません。最後のコマンドに関する情報へ
あなたは、配列の浅いコピーを作成し、それを間接参照することができ、
use feature 'say';
@arr = (1,2,3,4,5,6);
for $x (@{[ @arr ]})
{
print $x;
@arr = (6,5,4,3,2,1) if $x == 3;
}
私は彼がけれども出力「123456」を望んでいたと思います。 – sborsky