"如果"有多种选择的条件(RUBY)

时间:2014-03-21 22:13:26

标签: ruby if-statement options

我是ruby的初学者,我似乎无法找到解决这个简单问题的方法:

我有一个随机得到的变量:var1 = rand(0 ... 100)

我希望这个变量只有在25或75时才能被接受。如果它不是,它会保持随机性,直到达到25或75.

var1 = rand(0...100)

until var1 == (25 or 75)
var1 = rand (0...100)
end

变量" var1"总是给出25,因为它坚持25并且不接受75。

问题是:我怎样才能使声明包含两个选项而没有一个流行?我尝试过括号,但它似乎没有用。希望你能帮忙!

问候。

3 个答案:

答案 0 :(得分:1)

您可以使用Arrayinclude?

until [ 25, 75 ].include? var1

或简单的or

until var1 == 25 or var1 == 75

或者只是在01之间生成一个数字,并将0替换为25,将1替换为75

答案 1 :(得分:1)

再解释一下:

在Ruby中,除nilfalse值外,所有对象都具有真值。使用此经验法则25Fixnum对象,必须具有 true 值。

现在,您的条件表达式 - var1 == (25 or 75)内部 parens 2575两者都具有真实值,您使用or运算符。根据表达式,如果 LHS 评估为true,则不会评估 RHS ,因此(25 or 75)将始终返回25

因此修复它写如下:

until var1 == 25 or var1 == 75

答案 2 :(得分:1)

如果您只是尝试选择25或75,请执行以下操作:

[25, 75].sample