我希望能够动态调用实例方法。我发现可以使用
例如:
但我不知道如何调用这个方法:
send
, call
, eval
来实现这一点。有一些关于动态调用类方法的示例,但我还没有弄清楚如何将其应用到实例方法上。例如:
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