Ruby 中的 Switch Case

帕特里克·H

我正在尝试做一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章