语法1:
while {
#some code
}
continue {
#some other code
}
语法2:
while {
#some code
#some other code
}
SYNTAX 1是否比SYNTAX 2有任何优势?假设“某些代码”和“其他代码”在两种语法中保持相同的行集。或者它只有两种不同的样式没有编码优势。
答案 0 :(得分:6)
当您从循环中间调用continue
时,next
块会执行,因此它提供了一种在迭代之间执行某些公共代码的方法,而不管每次迭代的执行路径。 / p>
比较
my $last_item;
for my $item (@list) {
if ($last_item eq $item) {
do_something();
$last_item = $item;
next;
}
if (condition2($item,$last_item)) {
$last_item = $item;
next;
}
do_something_else();
$last_item = $item;
}
与
my $last_item;
for my $item (@list) {
if ($last_item eq $item) {
do_something();
next;
}
if (condition2($item,$last_item)) {
next;
}
do_something_else();
} continue {
$last_item = $item;
}
野外continue
的一些例子: