0

我需要像下面的示例一样从数组中运行多个方法,第一种方法有效,但我宁愿只运行这些方法而不显示结果。如何调整第二种方法,以免出现以下错误?

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)
4

1 回答 1

2

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

你可能想要:

[:method1, :method2].each {|m| method(m).call}
于 2013-01-29T10:31:28.880 回答