Быстрый Perl вопрос: при переходе через петлю (скажем, цикл While), в чем разница между next
и continue
команду? Я думал, что оба просто перейдут к следующей итерации цикла.
Perl - разница между "next" и "continue"?
Ответ 1
Ключевое слово 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
, потому что большинство программ сделать это в любом случае. Если вы хотите перейти к следующим случаям, нужно использовать 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
переходит к началу цикла. Условие цикла не оценивается.