繁体   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