Ruby 如果条件与&&;运算符,全部为true,最终结果为FALSE,带有和关键字它是好的
我有这样一个条件,即当我检查分离的每一侧时,如果两侧都为true,那么当我与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
&&
操作符一起检查两侧时,结果为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,
&
和和是不同的。我更喜欢使用()
,以避免译员和我自己在以后阅读代码时可能产生的混淆:)