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