[英]Difference between {puts a} and {|a| puts a} in Ruby?
在閱讀Ruby教程時,我看到他們使用第二種打印整個列表的方法| a |。 放一個,但我想知道為什么他們不簡單地輸入一個放一個 ,然后自己嘗試一下,使用放兩次將列表打印一次,而我還沒有找到原因
irb(main):001:0> a = ['hello', 'hi']
=> ["hello", "hi"]
irb(main):002:0> a.each {puts a}
hello
hi
hello
hi
=> ["hello", "hi"]
irb(main):03:0> a.each {|a| puts a}
hello
hi
=> ["hello", "hi"]
基本上,兩者之間有什么區別。 在此先感謝,如果我做傻了,對不起
a.each {puts a}
這意味着“對於數組a
每個元素,打印數組a
”。 如果您的數組包含三個元素,則該數組將被打印3次。
這是有效的紅寶石,但each
用法都不正確。 應該在block參數( |a|
)中接受當前元素。 不必被稱為a
,可以是任何東西。 這些行產生相同的結果:
a.each { |a| puts a }
a.each { |foo| puts foo }
在第一個行塊參數中, a
遮蔽了外部數組a
。 這就是為什么打印數組的兩個元素而不是打印整個數組兩次的原因。
a.each {puts a}
將返回整個數組
而
a.each {|a| puts a}
應該在||之間傳遞 數組的每個項目。 在這種情況下,使用相同的變量實際上是一個壞習慣。 最好做:
a.each {|item| puts item}
@ ThePanMan321:該塊對每個數組元素執行一次。 因此,在您的情況下,它執行兩次。 所以第一種情況相當於
a.size.times {puts a}
,您將獲得兩倍於要打印的數組。
在第二種情況下,第二個a
遮蓋 a
表示數組的外部a
。 真的很糟糕。 相當於
a.each {|goofy| puts goofy}
因此,每個數組元素只能看到一次。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.