我是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。
问题是:我怎样才能使声明包含两个选项而没有一个流行?我尝试过括号,但它似乎没有用。希望你能帮忙!
问候。
答案 0 :(得分:1)
您可以使用Array
和include?
:
until [ 25, 75 ].include? var1
或简单的or
:
until var1 == 25 or var1 == 75
或者只是在0
和1
之间生成一个数字,并将0
替换为25
,将1
替换为75
。
答案 1 :(得分:1)
再解释一下:
在Ruby中,除nil
和false
值外,所有对象都具有真值。使用此经验法则,25
是Fixnum
对象,必须具有 true 值。
现在,您的条件表达式 - var1 == (25 or 75)
内部 parens ,25
和75
两者都具有真实值,您使用or
运算符。根据或表达式,如果 LHS 评估为true
,则不会评估 RHS ,因此(25 or 75)
将始终返回25
。
因此修复它写如下:
until var1 == 25 or var1 == 75
答案 2 :(得分:1)
如果您只是尝试选择25或75,请执行以下操作:
[25, 75].sample