这更多的是语义问题。将变量与Ruby中的两个不同值进行比较
我想检查一个变量是否是两个值之一。最简单的方法是:
if var == "foo" || var == "bar"
# or
if var == 3 || var == 5
但是这对我来说并不是很干燥。我知道我可以使用String.match()
,但这对于非字符串变量不起作用,速度慢三倍。
有没有更好的方法检查变量对两个值?
这更多的是语义问题。将变量与Ruby中的两个不同值进行比较
我想检查一个变量是否是两个值之一。最简单的方法是:
if var == "foo" || var == "bar"
# or
if var == 3 || var == 5
但是这对我来说并不是很干燥。我知道我可以使用String.match()
,但这对于非字符串变量不起作用,速度慢三倍。
有没有更好的方法检查变量对两个值?
将所有值放入数组中,然后它应该很容易。
%w[foo bar].include?('foo') # => true
[3,5].include?(3) # => true
你可以这样做:
%W(foo bar baz).include? var
或者:
[3, 5].include? var
的case
声明似乎做你想要什么。
case var
when "foo", "bar" then case1()
end
case var
when 3, 5 then case2()
end
基于数组的方法似乎可能比这慢。
缺少if语句... if(%w [foo bar] .include?(var)) –
是的,我意识到我几乎可以在发布问题时尽快做到这一点。谢谢! – vonconrad