&引用;如果;具有多项选择的条件(RUBY)
我是ruby的初学者,似乎找不到解决这个简单问题的方法: 我有一个随机变量:var1=rand(0…100) 我希望这个变量只有在25或75的情况下才可以接受。如果不是,它会一直随机进行,直到达到25或75&引用;如果;具有多项选择的条件(RUBY),ruby,if-statement,options,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 问题是:我怎样才能使一个声明包含两个选项而没有一个选项?我试过用括号括起来,但似乎不起
var1 = rand(0...100)
until var1 == (25 or 75)
var1 = rand (0...100)
end
变量“var1”总是给出25,因为它坚持25,不接受75
问题是:我怎样才能使一个声明包含两个选项而没有一个选项?我试过用括号括起来,但似乎不起作用。希望你能帮忙
问候。您可以使用
数组和:
或简单的或:
until var1 == 25 or var1 == 75
或者只需生成一个介于0
和1
之间的数字,并将0
替换为25
,将1
替换为75
,仅作进一步解释:
在Ruby中,除了nil
和false
值之外,所有对象都有真值。根据这个经验法则,25
是一个Fixnum
对象,它必须具有真值
现在在您的条件表达式-var1==(25或75)
中,在参数内部,25
和75
都具有真值,您使用了或运算符。根据or表达式,如果LHS评估为true
,RHS将不会被评估,因此(25或75)
将始终返回25
因此,要修复它,请按如下所示编写:
until var1 == 25 or var1 == 75
如果您只是想选择25或75,请执行以下操作:
[25, 75].sample
写为var1==25 | | var1==75
。我不明白为什么要为此创建一个数组。..@ArupRakshit取决于,可能的值越多,可读性就越强。这也与提问者更接近的尝试相吻合。我在一个简单的或中编辑。蒂姆,在这种情况下,你用哪种方式编辑可能没有多大区别。但是,如果您有[a,b,…,z].include?
v,其中元素是方法,
a,
b,…,
z`都必须在构建数组时进行评估,而a
|
b
| | |········································
[25, 75].sample