Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;如果;具有多项选择的条件(RUBY)_Ruby_If Statement_Options - Fatal编程技术网

&引用;如果;具有多项选择的条件(RUBY)

&引用;如果;具有多项选择的条件(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 问题是:我怎样才能使一个声明包含两个选项而没有一个选项?我试过用括号括起来,但似乎不起

我是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

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


问候。

您可以使用
数组和:

或简单的

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