Ruby 如何检查参数是否为符号?
问题在标题中 我的参数可以是字符串或符号,根据它是什么,我希望执行不同的操作。有没有办法在Ruby中检查这个问题?另一个解决方案Ruby 如何检查参数是否为符号?,ruby,Ruby,问题在标题中 我的参数可以是字符串或符号,根据它是什么,我希望执行不同的操作。有没有办法在Ruby中检查这个问题?另一个解决方案 def foo(arg) if arg.is_a?(Symbol) do_symbol_stuff else do_string_stuff end end def foo(arg) case arg when Symbol do symbol stuff when String do stri
def foo(arg)
if arg.is_a?(Symbol)
do_symbol_stuff
else
do_string_stuff
end
end
def foo(arg)
case arg
when Symbol
do symbol stuff
when String
do string stuff
else
do error stuff
end
end
在Ruby中需要检查对象的类型是一种代码气味。这是一个标志,你应该重构你的参数是如何进入的。我同意,但这是一个非常简单的视图助手,我这样做的原因是,我可以以任何有效的形式发送我的参数,而不会导致异常。你可以只需arg=arg.to_sym,以确保你的参数的形式正确。这确实适用于字符串,但并非适用于所有可能的参数类型。像这样使用类#===方法:Symbol==arg。这当然是一个品味的问题,但我个人认为“如果arg是一个符号”比“如果arg等于符号”读起来更自然。