当名称包含在字符串变量中时,如何动态调用方法?例如:
class MyClass
def foo; end
def bar; end
end
obj = MyClass.new
str = get_data_from_user # e.g. `gets`, `params`, DB access, etc.
str #=> "foo"
# somehow call `foo` on `obj` using the value in `str`.
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?这样做是否存在安全风险?
可能重复:
如何将字符串转换为方法调用?
目前我有一个代码正在做这样的事情
def execute
case @command
when "sing"
sing()
when "ping"
user_defined_ping()
when "--help|-h|help"
get_usage()
end
Run Code Online (Sandbox Code Playgroud)
我发现这个案例非常无用且非常庞大,我只想通过使用变量@command调用适当的方法.就像是:
def execute
@command()
end
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我不需要和额外的execute()方法.
关于如何实现这款红宝石的任何建议?
谢谢!
编辑:为多个字符串添加了其他方法类型.不确定是否也可以优雅地处理.