我正在尝试做一个case
声明。代码如下所示:
def true?(verbosity)
verb = verbosity.to_s
case verb
when verb.match?('yes')
true
when verb.match?('y')
return true
when verb.match('ja')
true
when verb.match?('j')
true
when verb.to_i(10).eql?(1)
true
else
false
end
end
不管我在case
语句中写什么,即使调试器说options[:verbosity]
is "yes"
,case
语句也会立即跳转到false
并离开函数。我什至将显式转换为字符串。我必须如何编写声明才能获得有效评估?
在这种形式中,当你想分别评估所有case
条件时,你应该verb
在开始时省略,像这样:
case
when verb.match?('yes')
true
when verb.match?('ja')
true
# ...
也就是说,你不认为如果你使用正则表达式魔术来使整个方法更短,它会更容易阅读和更好吗?我在想这样的事情:
def true?(verbosity)
verb = verbosity.to_s
verb.match?(/yes|y|ja|j/i) || verb.to_i.eql?(1)
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句