我想動態調用實例方法。我發現send
,call
,eval
要做到這一點。有些動態調用類方法的例子,但我還沒有想出如何使它適用於實例方法。ruby - 如何動態調用模塊中的實例方法
例如
module MyModule
def Foo
puts "hello"
end
end
的實例方法名稱可以由上市:
MyModule.instance_methods
#=> [:Foo]
但我無法弄清楚如何調用該方法:
MyModule.send("Foo")
#=> NoMethodError: undefined method `Foo' for MyModule:Module
MyModule.method("Foo").call
#=> NameError: undefined method `Foo' for class `Module'
eval 'MyModule.Foo'
#=> NoMethodError: undefined method `Foo' for MyModule:Module
我如何可以調用實例方法,如Foo
,方法名稱?
請注意''eval'MyModule.Foo''是一樣的'MyModule.Foo'。 – Stefan
這是一個*實例方法*。你需要一個實例。 –