Perlスクリプト言語の学習を始めたばかりで、質問があります。
continue
Perlでは、ブロックがループで機能するがwhile
、do while
ループでは機能しない論理的な理由は何for
ですか?
Perlスクリプト言語の学習を始めたばかりで、質問があります。
continue
Perlでは、ブロックがループで機能するが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
使用されていないと思われます。for
for
例えば。次のコード ブロックはほとんど同等です。
for ($i = 0; $i < 10; $i++)
{
}
$i = 0;
while ($i < 10)
{
}
continue
{
$i++;
}
continue
意味のあるところならどこでもブロックを使用できます: while
、、ループ、until
およびforeach
「基本」ブロック(別のステートメントの一部ではないブロック)。リスト反復構造のfor
代わりにキーワードを使用できることに注意してください。もちろん、その場合はブロックを使用できます。foreach
continue
他のみんなが言ったように、for (;;)
ループにはすでにcontinue
一部があります-最初に実行したいのはどれですか?
continue
do { ... } while ...
構文的には非常に異なるため、ブロックも機能しません( do
BLOCKを引数として取る組み込み関数であり、while
一部はステートメント修飾子です)。本当に必要な場合は、ダブルカーリーコンストラクト(引数ブロック内の基本ブロック)を使用できると思います。
do {
{
...;
continue if $bad;
...;
}
continue {
...; # clean up
}
} while $more;