有没有更好的方法来写这个?
if a == 'new' || a == 'create'
...
else
...
end
我没有检查a
两次,而是认为我可以将第一行与一个a
结合起来。我正在寻找类似的东西:
if a == ['new' || 'create']
答案 0 :(得分:6)
可以通过多种方式进行测试,但是在单行上进行测试不一定是最好的想法。在Ruby中编写它的最简单方法之一是使用case
语句:
case a
when 'new', 'create'
...
else
...
end
这样做的好处是,您可以通过将其附加到when
列表轻松添加其他测试。
你可能会因为正则表达式而变得肮脏:
%w[foo renew new created create].each do |w|
puts w[/^(?:new|create)$/]
end
哪个会产生如下输出:
# >>
# >>
# >> new
# >>
# >> create
# >>
是使用Sublime Text时标记新行的输出。这意味着只有new
和create
匹配。
除非你理解正则表达式,否则我不特别推荐它,但它可以是一种非常快速的方法来检查大量的选项。
答案 1 :(得分:3)
是的,有:
if %w(new create).include? a
#code here
else
#code
end