目前我有一个代码正在做这样的事情
def execute
case @command
when "sing"
sing()
when "ping"
user_defined_ping()
when "--help|-h|help"
get_usage()
end
我觉得这个案子很无用而且很庞大,我只想通过使用变量@command调用适当的方法。类似的东西:
def execute
@command()
end
在这种情况下,我不需要和额外的execute()方法。
关于如何实现这款红宝石的任何建议?
谢谢!
编辑: 为多个字符串添加了其他方法类型。不确定是否也可以优雅地处理。
答案 0 :(得分:5)
查看send
send(@command) if respond_to?(@command)
respond_to?
确保self
在尝试执行此方法之前响应此方法
对于更新后的get_usage()
部分,我会使用类似的内容:
def execute
case @command
when '--help', '-h', 'help'
get_usage()
# more possibilities
else
if respond_to?(@command)
send(@command)
else
puts "Unknown command ..."
end
end
end
答案 1 :(得分:1)
您正在寻找send
。看看这个:http://ruby-doc.org/core/classes/Object.html#M000999
def execute
send @command
end