26

nextPerl に関する簡単な質問: ループ (while ループなど) を通過する場合、aとcontinueコマンドの違いは何ですか? どちらもループの次の繰り返しにスキップすると思いました。

4

2 に答える 2

22

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";
}

キーワードは、 -構文、Perlの-で別のcontinue意味を持ちます。ブロックが実行された後、ほとんどのプログラムがとにかくそれを行うので、Perlは自動的にsします。次のケースにフォールスルーしたい場合は、を使用する必要があります。ここで、制御フローを変更します。givenwhenswitchcasewhenbreakcontinuecontinue

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ループブロックの先頭にジャンプします。ループ状態は評価されません。

于 2012-08-22T21:46:36.143 に答える