此循环永不停止:
while (1)
{
while (1)
{
last;
}
}
此循环停止
while (1)
{
do
{
last;
}
while (1);
}
没有last
,它们的无限相似。第二个循环结构似乎没有将内部循环视为一个循环。我猜想第二个结构last
实际上是在内循环开始之前退出外循环的。但为什么?在do{}
完成第一次执行后,内部循环是否实际上会“稍后”开始?
last不能用于退出返回诸如eval {},sub {}或do {}之类的值的块,并且不应用于退出grep()或map()操作。
do {
# ...
} while (1);
实际上不是在Perl循环,因此last
,next
,redo
不正确的内部IT部门。
单块是实际上虽然是循环,所以你可以用在阻止您做表达式可以last
充当你希望:
{
do {
last;
} while (1);
}
一个更直观的解决方案将是具有一个控制执行力的哨兵值:
my $should_stop = 0;
do {
if ( <some-condition> ) { $should_stop = 1; }
} while ( !$should_stop )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句