0

次の例のように、配列から複数のメソッドを実行する必要があります。最初のアプローチは機能しますが、結果を表示せずにメソッドを実行したいだけです。以下のエラーが発生しないように、2番目のアプローチをどのように適応させるのですか?

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 に答える