我正在编写一个 CLI 工具并具有以下代码:
commands = {
:'-h' => :help,
:'--help' => :help,
:help => :help,
:r => :remove,
:rm => :remove,
# ...
}
if some_obj.respond_to? commands[ARGV.first.to_sym]
some_obj.send commands[ARGV.first.to_sym]
end
但是,当在ARGV.first.to_sym
中找不到时commands
,respond_to?
抱怨
./tool.rb:121:in `respond_to?': nil is not a symbol (TypeError)
from ./tool.rb:121:in `<main>'
是否可以在没有此错误的情况下使用其他方法,并且也无需nil
明确检查?
谢谢。