我需要从数组中运行多个方法,如下面的示例,第一种方法可行,但我宁愿让运行方法而不显示结果。如何调整第二种方法,以便我不会得到下面的错误?
def method1
print 1
end
def method2
print 2
end
[method1, method2].each(&p) #=>12 (works)
[method1, method2].each(&method(:run))
#=>12 `method': undefined method `run' for class `Object' (NameError)
答案 0 :(得分:2)
因为method1
调用方法(而不是引用它),所以数组实际上包含运行方法的结果,而不是对方法本身的引用。
你可能想要:
[:method1, :method2].each {|m| method(m).call}