在ruby中的Array.new(10,&:next)下面是什么

时间:2017-12-07 12:20:29

标签: arrays ruby

我在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,我更喜欢它!

1 个答案:

答案 0 :(得分:0)

在这种情况下,

&Symbol#to_proc的快捷方式。相应的完整版本是:

Array.new(3) { |i| i.next }
#=> [1, 2, 3]

下面的实例可以帮助您了解它是如何工作的:

Array.new(3, &(:next.to_proc))
#=> [1, 2, 3]