簡単なPerlの質問:ループ(whileループなど)を通過するとき、next
コマンドとcontinue
コマンドの違いは何ですか?どちらもループの次の反復にスキップするだけだと思いました。
continue
キーワードは、ループのブロックの後にの後に使用できます。 continue
ブロックのコードは、次の反復の前(ループ条件が評価される前)に実行されます。制御フローには影響しません。
my $i = 0;
when (1) {
print $i, "\n";
}
continue {
if ($i < 10) {
$i++;
} else {
last;
}
}
にほぼ等しい
foreach my $i (0 .. 10){
print $i, "\n";
}
continue
キーワードは、given
-when
構成では別の意味を持ち、Perlのswitch
-case
です。 when
ブロックが実行されると、Perlは自動的にbreak
sを実行します。これは、ほとんどのプログラムがとにかくそうするためです。次のケースにフォールスルーしたい場合は、continue
を使用する必要があります。ここで、continue
は制御フローを変更します。
given ("abc") {
when (/z/) {
print qq{Found a "z"\n};
continue;
}
when (/a/) {
print qq{Found a "a"\n};
continue;
}
when (/b/) {
print qq{Found a "b"\n};
continue;
}
}
印刷します
Found a "a"
Found a "b"
next
キーワードはループでのみ使用可能であり、新しい反復が含まれます。ループ状態の再評価。 redo
は、ループブロックの先頭にジャンプします。ループ条件は評価されません。