从数组中运行多个方法

时间:2013-01-29 10:25:29

标签: ruby

我需要从数组中运行多个方法,如下面的示例,第一种方法可行,但我宁愿让运行方法而不显示结果。如何调整第二种方法,以便我不会得到下面的错误?

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)

1 个答案:

答案 0 :(得分:2)

因为method1调用方法(而不是引用它),所以数组实际上包含运行方法的结果,而不是对方法本身的引用。

你可能想要:

[:method1, :method2].each {|m| method(m).call}