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,因为大多数程序都会这样做。如果你想 fall through 到下一个案例,必须使用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;
}
}
continue* 块中的语句将在每次迭代中执行,而不管循环是照常执行还是循环需要通过遇到 next 语句来终止特定的迭代。
不带 continue 块的示例:
my $x=0;
while($x<10)
{
if($x%2==0)
{
$x++; #incrementing x for next loop when the condition inside the if is satisfied.
next;
}
print($x."\n");
$x++; # incrementing x for the next loop
}
2条答案
按热度按时间m1m5dgzv1#
continue
关键字可以在循环的块后 * 使用。continue
块中的代码在下一次迭代之前执行(在循环条件求值之前)。它不影响控制流。几乎相当于
continue
关键字在given
-when
结构中有另一种含义,Perl的switch
-case
。在执行when
块之后,Perl会自动执行break
,因为大多数程序都会这样做。如果你想 fall through 到下一个案例,必须使用continue
。这里,continue
修改控制流。将打印
next
关键字仅在循环中可用,并导致新的迭代,包括。循环条件的重新评估。redo
跳转到循环块的开头。不计算循环条件。lzfw57am2#
执行 next 语句将跳过执行该特定迭代的循环中的其余语句。
不带 continue 块的示例:
在上面的例子中,x的增量需要写入2次。但是如果我们使用continue语句,它可以保存所有需要执行的语句,我们只能在continue循环中递增x一次。
两种情况下的输出都是1,3,5,7,9