首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl编程: continue块

Perl编程: continue块
EN

Stack Overflow用户
提问于 2011-05-11 19:13:25
回答 3查看 3.1K关注 0票数 3

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

在Perl中,让continue块与whiledo while循环一起工作,而不是与for循环一起工作的逻辑原因是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-11 20:15:04

您可以在任何有意义的地方使用continue块:使用whileuntilforeach循环,以及“基本”块--这些块不是另一个语句的一部分。请注意,对于列表迭代构造,可以使用关键字for而不是foreach,当然,在这种情况下可以使用continue块。

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

continue块也不能与do { ... } while ...一起使用,因为从语法上讲这是完全不同的事情(do是一个内置函数,以块作为其参数,而while部分是一个语句修饰符)。我想你可以对它们使用双卷曲结构(基本块在参数块中),如果你真的需要这样做的话:

代码语言:javascript
复制
do {
    {
        ...;
        continue if $bad;
        ...;
    }
    continue {
        ...; # clean up
    }
} while $more;
票数 2
EN

Stack Overflow用户

发布于 2011-05-11 19:26:47

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

如果有一个continue块附加到一个块(通常是在while或foreach中),它总是在条件即将再次求值之前执行,就像C中的

循环的第三部分一样。

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

代码语言:javascript
复制
for (0 .. 10) {
    print "$i\n";
} continue { $i++ }

这将是可以接受的。

票数 7
EN

Stack Overflow用户

发布于 2011-05-11 19:24:24

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

例如:以下代码块基本上是等效的:

代码语言:javascript
复制
for ($i = 0; $i < 10; $i++)
{
}

代码语言:javascript
复制
$i = 0;
while ($i < 10)
{
}
continue
{
    $i++;
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5963286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档