首页
学习
活动
专区
圈层
工具
发布

Ruby's‘s
EN

Stack Overflow用户
提问于 2011-11-11 20:45:44
回答 3查看 5.4K关注 0票数 5

可能重复:

Difference between “and” and && in Ruby?

Ruby: difference between || and 'or'

我有这样的代码(就像这样)

代码语言:javascript
复制
foo = nil or 4

我希望foo是第一个值(可以是nil),或者是缺省值4。当我在irb中测试时,输出与我预期的一样。我真傻,后来我没有检查foo的价值。过了一会儿,我开始注意到代码中的一些错误,直到我在irb中检查了foo的值,才发现问题所在,这是,噢,令人惊讶的是,nil而不是预期的4。

关于or||的故事是什么?他们应该做替补吗?关于使用or而不是||是否有一些注意事项?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-11 20:49:25

这里的问题是优先考虑的。or的优先级低于||。因此,您的第一条语句的计算值为

代码语言:javascript
复制
(x = nil) or 4

表达式的结果是4 (这就是您认为它在irb中正确工作的原因),但是x被指定为nil,因为or的优先级低于=

||版本可以满足您的需要:

代码语言:javascript
复制
x = (nil || 4)
票数 13
EN

Stack Overflow用户

发布于 2011-11-11 20:47:49

or的优先级低于||= -这意味着在or之前执行赋值。而||具有比=更高的优先级,并且首先执行。

票数 4
EN

Stack Overflow用户

发布于 2011-11-11 20:47:44

or的优先级(非常)低。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8099742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档