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

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

希望是第二种情况。

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

4

5 回答 5

3
case y
when 1, 5, -2, 15132, 3.14159265, 15 then p "success"
end
于 2013-05-01T19:50:31.917 回答
3

您正在寻找include?

p 'success' if [1,5,-2,15132,3.14159265,15].include? y
于 2013-05-01T19:46:14.507 回答
3
p 'success' if [1, 5, -2, 15132, 3.14159265, 15].include? y
于 2013-05-01T19:46:21.740 回答
1

对于更一般的情况,您可以使用 any? 具有比较块的方法;这具有可与除 == 之外的运算符一起使用的优点:

p 'success' if [1, 5, -2, 15132, 3.14159265, 15].any? { |i| i == y }
于 2013-05-01T20:29:51.963 回答
0

来自Array#index

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

p 'success' if [1,5,-2,15132,3.14159265,15].index(y)
于 2013-05-01T20:14:10.960 回答