快速Perl问题:当经历一个循环(比如一个while循环)时,a next和continue命令之间有什么区别?我认为两者都跳到循环的下一次迭代.
amo*_*mon 18
的continue关键字可用于后一个的块循环.continue块中的代码在下一次迭代之前执行(在评估循环条件之前).它不会影响控制流.
my $i = 0;
when (1) {
print $i, "\n";
}
continue {
if ($i < 10) {
$i++;
} else {
last;
}
}
Run Code Online (Sandbox Code Playgroud)
几乎相当于
foreach my $i (0 .. 10){
print $i, "\n";
}
Run Code Online (Sandbox Code Playgroud)
该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;
}
}
Run Code Online (Sandbox Code Playgroud)
会打印
Found a "a"
Found a "b"
Run Code Online (Sandbox Code Playgroud)
该next关键字仅在循环中可用,并导致新的迭代,包括.重新评估循环条件.redo跳转到循环块的开头.不评估循环条件.