可能重复:
Difference between “and” and && in Ruby?
Ruby: difference between || and 'or'
我有这样的代码(就像这样)
foo = nil or 4我希望foo是第一个值(可以是nil),或者是缺省值4。当我在irb中测试时,输出与我预期的一样。我真傻,后来我没有检查foo的价值。过了一会儿,我开始注意到代码中的一些错误,直到我在irb中检查了foo的值,才发现问题所在,这是,噢,令人惊讶的是,nil而不是预期的4。
关于or和||的故事是什么?他们应该做替补吗?关于使用or而不是||是否有一些注意事项?
发布于 2011-11-11 20:49:25
这里的问题是优先考虑的。or的优先级低于||。因此,您的第一条语句的计算值为
(x = nil) or 4表达式的结果是4 (这就是您认为它在irb中正确工作的原因),但是x被指定为nil,因为or的优先级低于=。
||版本可以满足您的需要:
x = (nil || 4)发布于 2011-11-11 20:47:49
or的优先级低于||和= -这意味着在or之前执行赋值。而||具有比=更高的优先级,并且首先执行。
发布于 2011-11-11 20:47:44
or的优先级(非常)低。
https://stackoverflow.com/questions/8099742
复制相似问题