ruby apply放入数组

时间:2017-12-27 19:52:06

标签: ruby

对于数组元素响应的方法,我可以

[1,2,3].each {|i| puts i}

但是:

[1,2,3].each(&:puts)

我做不到:

Kernel

如何优雅地将puts方法(如e.preventDefault())应用于数组中的对象?会有更多的Rubyish方式吗?

2 个答案:

答案 0 :(得分:5)

你的最后一个例子是惯用的Ruby:

[1,2,3].each { |x| puts x }

当然还有其他方法可以做同样的事情,但上面的代码很简单,任何Rubyist都能理解。

答案 1 :(得分:4)

puts是一种在Kernel上定义的方法,可将其转换为proc,使用:

[1,2,3].each(&method(:puts))

Symbol#to_proc具有特定含义,基本上将自己发送给接收者。

可以将任何方法转换为proc以将其传递给阻止:

%w[1 2 3].map(&method(:Integer))
#⇒ [1, 2, 3]
相关问题