我想动态调用实例方法。我发现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
这是一个*实例方法*。你需要一个实例。 –