2013-05-01 45 views
1

在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 

根据我的搜索,我倾向于认为,这要么是不可能的,或者它是我的搜索太模糊。

我希望这是第二种情况。

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

+2

完全相同的表达式规则适用于'if'和'while'。另外,与浮点数进行比较时要小心 - 如果任一数是计算结果,通常不会产生预期结果。 – user2246674 2013-05-01 19:50:05

回答

3

您正在寻找include?

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

是的,那正是我在找的东西,谢谢 – 2013-05-01 19:47:32

+0

!([..]。include?y) – 2013-05-01 19:58:41

3
p 'success' if [1, 5, -2, 15132, 3.14159265, 15].include? y 
3
case y 
when 1, 5, -2, 15132, 3.14159265, 15 then p "success" 
end 
+0

我的一个怎么样?请检查 :) – 2013-05-01 20:16:35

0

Array#index

返回使得对象==来的第一个对象的元索引obj.Returns零如果没有找到匹配。

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

因为你可以使用任何一个更一般的情况?方法与比较块;这具有可与除了==之外的运算符一起使用的优点:

p 'success' if [1, 5, -2, 15132, 3.14159265, 15].any? { |i| i == y } 
相关问题