我在Ruby中看到有很多方法来声明数组对象,如:
[1,2,3]
Array.new(3){|i| i+1}
即使采用更为棘手的方式:
Array.new(3, &1.method(:+))
其中&1.method(:+)
表示对象1(按值引用)响应方法+直接引用,所以每次(在这种情况下为3次)数组正在执行块,对象递增如果我在这里的分析错了,我将不胜感激。
所以,顺便说一下,有这种情况,我并没有完全遵循:
Array.new(3, &:next)
问题是:
&
在这种情况下做了什么?我猜这是直接引用某个值,但我不知道究竟是哪一个。在&
之后,:next
在这种情况下的行为如何。
事先,我非常感谢你的帮助。我掌握了Ruby,我更喜欢它!
答案 0 :(得分:0)
&
是Symbol#to_proc
的快捷方式。相应的完整版本是:
Array.new(3) { |i| i.next }
#=> [1, 2, 3]
下面的实例可以帮助您了解它是如何工作的:
Array.new(3, &(:next.to_proc))
#=> [1, 2, 3]