2013-05-01 49 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 } 
相關問題