我有一个字符串变量,只能包含6个不同的值。我想检查它是否包含前4个值之一或2个秒值之一。
是否有比这更优雅的方式:
if string.eql? 'val1' || string.eql? 'val2' || string.eql? 'val3' || string.eql? 'val4'
...
elsif string.eql? 'val5' || string.eql? 'val6'
...
end
也许像if string is in ['val1', 'val2', 'val3', 'val4']
?
答案 0 :(得分:16)
您可以使用include?
:
if ['val1', 'val2', 'val3', 'val4'].include?(string)
答案 1 :(得分:1)
case string
when *%w[val1 val2 val3 val4]
...
else
...
end
答案 2 :(得分:0)
返回ary中第一个对象的索引,使对象为== to obj。 如果未找到匹配项,则返回nil。
puts "something" if ['val1', 'val2', 'val3', 'val4'].index("val1")
# >> something