我刚刚开始学习Perl脚本语言并且有一个问题。
在Perl中,continue
阻止使用while
和do while
循环但不使用for
循环的逻辑原因是什么?
答案 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
块:使用while
,until
和foreach
循环,以及'基本'块 - 不是块另一个声明的一部分。请注意,您可以使用关键字for
代替foreach
作为列表迭代构造,当然,在这种情况下,您可以拥有continue
块。
正如其他人所说,for (;;)
循环已经有continue
部分 - 你想先执行哪一个?
continue
块也不能与do { ... } while ...
一起使用,因为从语法上来说这是一个非常不同的东西(do
是一个以BLOCK为参数的内置函数,{{1} } part是一个语句修饰符)。我想你可以使用双卷曲构造(参数块内的基本块),如果你真的必须:
while