假设我有一个方法(实际上是一个帮手):
def f(x)
x + 1
end
我想做的是将它映射到类似的可枚举:
(1..10).map &f
显然无法提出ArgumentError: wrong number of arguments (0 for 1)
错误。我知道我可以像块一样调用这个方法:
(1..10).map {|x| f x }
但它对我来说看起来不是一个优雅的解决方案。还有什么可以做的?
答案 0 :(得分:4)
您可以使用:
(1..10).map(&method(:f))
答案 1 :(得分:2)
首先,我认为这个
没有任何不雅(1..10).map {|x| f x }
通常,您应该使用它。但是,在特殊情况下,可以使用特殊表单(您需要在对象上调用方法,并且该方法不接受参数)。
class Fixnum
def f
self + 1
end
end
(1..10).map(&:f)
在这两种方法之间,我会在任何一天拿到第一种方法。