【发布时间】:2016-05-21 20:50:40
【问题描述】:
似乎to_proc 不适用于细化中定义的方法:
module ArrayExtensions
refine Array do
def sum
reduce(0, :+)
end
end
end
using ArrayExtensions
puts [[1, 2, 3]].map { |array| array.sum } # => 6
puts [[1, 2, 3]].map(&:sum) # => array.rb:13:in `map': undefined method `sum' for [1, 2, 3]:Array (NoMethodError)
puts [1, 2, 3].method(:sum).to_proc.call # => array.rb:14:in `method': undefined method `sum' for class `Array' (NameError)
这是预期的行为吗?有解决办法吗?
【问题讨论】:
-
情况正好相反。细化中定义的方法在
Symbol#to_proc创建的过程中不起作用。
标签: ruby proc refinements