多重比较的正确语法是什么?

时间:2013-05-01 19:44:35

标签: ruby if-statement while-loop

Ruby中是否有适当的语法来比较同一个变量的多个值?例如:

#!/usr/bin/ruby -w

y = 15
p 'success' if y == 1 || y == 5 || y == -2 || y == 15132 || y == 3.14159265  || y == 15

可以写成以下内容:

y = 15
p 'success' if y == 1,5,-2,15132,3.14159265,15

如果是这样,那还适用于while循环吗?

y = 15
while y != 1,5,-2,15132,3.14159265,15
y = rand(50)
p y
end

根据我的搜索,我倾向于认为这不可能,或者对我的搜索来说太模糊了。

我希望这是第二种情况。

我已经考虑过一个数组itteration解决方案,但它并不像我想的那样漂亮或简单。

5 个答案:

答案 0 :(得分:3)

您正在寻找include?

p 'success' if [1,5,-2,15132,3.14159265,15].include? y

答案 1 :(得分:3)

p 'success' if [1, 5, -2, 15132, 3.14159265, 15].include? y

答案 2 :(得分:3)

case y
when 1, 5, -2, 15132, 3.14159265, 15 then p "success"
end

答案 3 :(得分:1)

对于更一般的情况,您可以使用任何?具有比较块的方法;除了==:

之外,这还有可用于操作员的优点
p 'success' if [1, 5, -2, 15132, 3.14159265, 15].any? { |i| i == y }

答案 4 :(得分:0)

来自Array#index

  

返回ary中第一个对象的索引,使得对象为== to obj。如果未找到匹配则返回nil。

p 'success' if [1,5,-2,15132,3.14159265,15].index(y)