Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 如果条件与&&;运算符,全部为true,最终结果为FALSE,带有和关键字它是好的_Ruby - Fatal编程技术网

Ruby 如果条件与&&;运算符,全部为true,最终结果为FALSE,带有和关键字它是好的

Ruby 如果条件与&&;运算符,全部为true,最终结果为FALSE,带有和关键字它是好的,ruby,Ruby,我有这样一个条件,即当我检查分离的每一侧时,如果两侧都为true,那么当我与&&操作符一起检查两侧时,结果为false 所有这些变量和常量都是字符串,这里没有数字 [Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include? status_was && status == Budget::STATUS_WAITING_PRODUCTION[:value] 使用和关键字结果tr

我有这样一个条件,即当我检查分离的每一侧时,如果两侧都为true,那么当我与
&&
操作符一起检查两侧时,结果为
false

所有这些变量和常量都是字符串,这里没有数字

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include? status_was && status == Budget::STATUS_WAITING_PRODUCTION[:value]

使用
关键字结果
true
的相同代码。你知道为什么会产生错误吗?

你的原始代码会被翻译成

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include? (status_was && status == Budget::STATUS_WAITING_PRODUCTION[:value])
它可能会始终返回
false
,因为
status\u was&&status==Budget::status\u WAITING\u PRODUCTION[:value]
将始终返回
false

在这种情况下,应该使用括号。提示:优先级

[Budget::STATUS_ACCEPTED[:value], Budget::STATUS_WAITING_PAYMENT[:value]].include?(status_was) &&
  status == Budget::STATUS_WAITING_PRODUCTION[:value]

天啊,太简单了。我对此非常着迷,因为使用和关键字它是有效的,而且优先级不一样…@RamondePaulamarkes yea,
&
是不同的。我更喜欢使用
()
,以避免译员和我自己在以后阅读代码时可能产生的混淆:)