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. 這兩個語句在perl中總是一樣嗎?
- 3. numpy獨一無二總是一樣嗎?
- 4. JSON對象和DTO是一樣的嗎?
- 5. jQuery.extend()和jQuery.fn.extend()是一樣的...對嗎?
- 6. 對於mysql django,NULL和FALSE是一樣的嗎?
- 7. IMultiValueConverter的參數總是一樣嗎?
- 8. zlib:壓縮流總是一樣的嗎?
- 9. Perl的opendir總是返回。和..第一?
- 10. 在Perl和Java中的多重繼承是一樣的嗎?
- 11. Ajax readyState總是等於1
- 12. 是(\ w +)?和(\ w *)一樣嗎?
- 13. 每個iPhone和iPad上的可用字體總是一樣嗎?
- 14. mldivide總是和MATLAB中的OLS一樣嗎?
- 15. #pragma pack(16)和#pragma pack(8)的效果總是一樣嗎?
- 16. 什麼是任意實例?對於quicksort和mergesort它是一樣的嗎?
- 17. Global.TotalPages和Global.PageNumber總是爲1
- 18. Laravel總和 - >第一()總結多於1個結果
- 19. 是clearTimeout和clearInterval是一樣的嗎?
- 20. C++ x + = 1 x ++和x = x + 1是不是一樣?
- 21. SQLite語法對於所有平臺都是一樣的嗎?
- 22. 「true ==!false」總是對的嗎?
- 23. 將等於一個整數總是等於一個整數嗎?
- 24. retainCount總是-1?
- 25. hitTest.RowIndex總是-1
- 26. 'bol ===!0'和'bol == true'是一樣的嗎?
- 27. 是microsoft exchange和sharepoint一樣嗎?
- 28. Arent id和class是一樣的嗎? :/
- 29. 依賴和協會是一樣的嗎?
- 30. jQuery.ajax和$ .ajax是一樣的嗎?
@asker,添加結論。 – ikegami