Perl编程:继续阻止

时间:2011-05-11 11:13:25

标签: perl for-loop while-loop continue

我刚刚开始学习Perl脚本语言并且有一个问题。

在Perl中,continue阻止使用whiledo while循环但不使用for循环的逻辑原因是什么?

3 个答案:

答案 0 :(得分:7)

来自http://perldoc.perl.org/functions/continue.html

  

如果   有一个继续BLOCK附加   一个块(通常在一段时间或   foreach),它总是被执行   在条件即将到来之前   再次评估,就像第三个一样   C语言中for循环的一部分

意味着在for循环中,第三个参数是继续表达式,例如for (initialization; condition; continue),因此不需要。另一方面,如果您使用for样式中的foreach,例如:

for (0 .. 10) {
    print "$i\n";
} continue { $i++ }

这是可以接受的。

答案 1 :(得分:4)

我怀疑在continue循环中没有使用for块,因为它完全等同于for循环的第3个表达式(递增/递减等)

例如。以下代码块大致相当:

for ($i = 0; $i < 10; $i++)
{
}

$i = 0;
while ($i < 10)
{
}
continue
{
    $i++;
}

答案 2 :(得分:2)

你可以在任何有意义的地方使用continue块:使用whileuntilforeach循环,以及'基本'块 - 不是块另一个声明的一部分。请注意,您可以使用关键字for代替foreach作为列表迭代构造,当然,在这种情况下,您可以拥有continue块。

正如其他人所说,for (;;)循环已经有continue部分 - 你想先执行哪一个?

continue块也不能与do { ... } while ...一起使用,因为从语法上来说这是一个非常不同的东西(do是一个以BLOCK为参数的内置函数,{{1} } part是一个语句修饰符)。我想你可以使用双卷曲构造(参数块内的基本块),如果你真的必须:

while