Perlスクリプト言語の学習を始めたばかりで、質問があります。
continuePerlでは、ブロックがループで機能するがwhile、do whileループでは機能しない論理的な理由は何forですか?
Perlスクリプト言語の学習を始めたばかりで、質問があります。
continuePerlでは、ブロックがループで機能するがwhile、do whileループでは機能しない論理的な理由は何forですか?
http://perldoc.perl.org/functions/continue.htmlから
BLOCK に接続された continue BLOCK がある場合 (通常は while または foreach 内)、Cの for ループの 3 番目の部分と同様に、条件が再度評価される直前に常に実行されます。
つまり、forループでは、3 番目の引数は継続式 (たとえばfor (initialization; condition; continue)) であるため、必要ありません。一方、次のようなスタイルで使用forする場合:foreach
for (0 .. 10) {
print "$i\n";
} continue { $i++ }
それは受け入れられるでしょう。
ブロックはループの 3 番目の式 (インクリメント/デクリメントなど)とまったく同じであるため、ループでcontinue使用されていないと思われます。forfor
例えば。次のコード ブロックはほとんど同等です。
for ($i = 0; $i < 10; $i++)
{
}
$i = 0;
while ($i < 10)
{
}
continue
{
$i++;
}
continue意味のあるところならどこでもブロックを使用できます: while、、ループ、untilおよびforeach「基本」ブロック(別のステートメントの一部ではないブロック)。リスト反復構造のfor代わりにキーワードを使用できることに注意してください。もちろん、その場合はブロックを使用できます。foreachcontinue
他のみんなが言ったように、for (;;)ループにはすでにcontinue一部があります-最初に実行したいのはどれですか?
continuedo { ... } while ...構文的には非常に異なるため、ブロックも機能しません( doBLOCKを引数として取る組み込み関数であり、while一部はステートメント修飾子です)。本当に必要な場合は、ダブルカーリーコンストラクト(引数ブロック内の基本ブロック)を使用できると思います。
do {
{
...;
continue if $bad;
...;
}
continue {
...; # clean up
}
} while $more;