3

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

continue在 Perl 中,使用whileanddo while循环而不使用循环的逻辑原因是什么for

4

3 回答 3

7

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

如果有一个 continue BLOCK 附加到一个 BLOCK(通常在 while 或 foreach 中),它总是在条件即将被再次评估之前执行,就像C中 for 循环的第三部分一样。

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

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

这将是可以接受的。

于 2011-05-11T11:26:47.390 回答
4

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

例如。以下代码块大部分是等效的:

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

$i = 0;
while ($i < 10)
{
}
continue
{
    $i++;
}
于 2011-05-11T11:24:24.233 回答
2

continue您可以在任何有意义的地方使用块:with和循环while,以及“基本”块——不属于另一个语句的块。请注意,您可以使用关键字而不是列表迭代构造,当然在这种情况下您可以使用块。untilforeachforforeachcontinue

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

continue块也不起作用,do { ... } while ...因为在语法上这是一个非常不同的东西(do是一个以 BLOCK 作为其参数的内置函数,并且该while部分是一个语句修饰符)。我想你可以使用双卷曲构造(参数块内的基本块),如果你真的必须:

do {
    {
        ...;
        continue if $bad;
        ...;
    }
    continue {
        ...; # clean up
    }
} while $more;
于 2011-05-11T12:15:03.867 回答