我试图找出是否有更简洁的方式来写这样的东西:
if var1 == "hi" || var1 == "bye" || var1 == "well" || var1 == "hello"
puts var1
end
基本上,有一个变量,我想知道它是否等于几个可能值中的一个。
我尝试了以下但是无效:
if var1 == ("hi" || "bye" || "well" || "hello")
puts var1
end
答案 0 :(得分:6)
puts var1 if %w(hi bye well hello).include? var1
答案 1 :(得分:1)
如果列表更大并且您将要进行大量检查,那么您可以使用哈希节省一些时间:
want = Hash[%w{hi bye well hello}.map { |s| [ s, true ] }]
puts var1 if(want[var1])
或Set:
want = Set[*%w{hi bye well hello}] # Or want = %w{...}.to_set
puts var1 if want.include? var1
构建哈希或集合是一次性命中,但检查哈希比使用include?
扫描数组要快得多。如果有很多事情需要检查,或者你一遍又一遍地检查,差异可能是值得的。