簡體   English   中英

{put a}和{| a |之間的差異 在Ruby中放一個}?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM