4
A
回答
13
一个区别是,for(1)
套$ _到1的值,以及:
my $x = do { 1 }; # $x = 1
my $y = for(1){ 1 }; # invalid
5
:
for(1){
print $_; # prints 1
}
此外,do
序列中返回的最后一个命令的值关于一样。
您可以
next
,last
和redo
一个for
循环,但do
不是一个循环 - 包括作为do
的一部分 -while
“循环”。因此,在一个非平凡的区块中,你无法确定。然而,这将工作:do {{ ... }};
而且
do
不会自动设置$_
到列表中,这样的裸for
循环意志的每个成员。
6
你可能真的只是寻找简单的卷曲。
{
print 1;
}
它具有以下优点:
- 创建一个词法范围(如
for (1)
和do {}
)。 - 您可以在其中使用
next
,last
和redo
(如for (1)
)。 - 它并不掩盖
$_
(如do {}
)。
但
- 它只能用在一份声明中预期(如
for (1)
,但不像do {}
)。
因此,{ ... }
更有意义比for (1) { ... }
,而当你想返回一个值do { ... }
是非常有用的。
1
否。它们具有不同的编译属性并具有不同的效果。它们仅在一个维度上相似,因为它们引入的代码不会被循环 - 它们与其他结构(包括裸块和(sub {...})->()
)有共同之处。
这里有一个明显的区别:for (LIST) BLOCK
是一个循环,而do BLOCK
是一个表达式。这意味着,
for (1) {
say "Blurgh"
} unless 1;
不能编译,而
do {
say "Blurgh"
} unless 1;
一样。
相关问题
- 1. sys.modules [__ name __] .__ doc__和__doc__总是一样吗?
- 2. numpy独一无二总是一样吗?
- 3. 对于mysql django,NULL和FALSE是一样的吗?
- 4. zlib:压缩流总是一样的吗?
- 5. IMultiValueConverter的参数总是一样吗?
- 6. Perl的opendir总是返回。和..第一?
- 7. Ajax readyState总是等于1
- 8. 在Perl和Java中的多重继承是一样的吗?
- 9. Global.TotalPages和Global.PageNumber总是为1
- 10. Laravel总和 - >第一()总结多于1个结果
- 11. C++ x + = 1 x ++和x = x + 1是不是一样?
- 12. 是clearTimeout和clearInterval是一样的吗?
- 13. 将等于一个整数总是等于一个整数吗?
- 14. hitTest.RowIndex总是-1
- 15. C++ - 与Perl一样用于OOP的Moose
- 16. Arent id和class是一样的吗? :/
- 17. CDN和云是一样的吗?
- 18. Python:是isalnum()和isdigit一样吗?
- 19. 'bol ===!0'和'bol == true'是一样的吗?
- 20. 是microsoft exchange和sharepoint一样吗?
- 21. 依赖和协会是一样的吗?
- 22. jQuery.ajax和$ .ajax是一样的吗?
- 23. 抽样直方图,使样品上的总和是统一的
- 24. Cookie maxAge总是-1
- 25. TextBox.LineCount总是-1 WPF
- 26. 验证准确性总是可以和训练准确度一样高吗?
- 27. pt和px中的字体大小总是看起来一样吗?
- 28. 为什么密度曲线下的面积总和总是大于1(R)?
- 29. Perl对于重度文本处理来说是一个很好的选择吗?
- 30. 执行代码只有一个变量的总和等于1
@asker,添加结论。 – ikegami