我有这个代码(像这样)
foo = nil or 4
Run Code Online (Sandbox Code Playgroud)
我希望foo成为第一个值(可能是nil),还是默认值4.当我在irb中测试时,输出就是我所期望的.傻傻的我,我没有检查以后的价值foo.过了一会儿,我开始注意到我的代码中出现了一些错误,直到我检查了fooirb中的返回值,我才发现问题,这是哦,意外,nil而不是预期的4.
关于orvs 的故事是||什么?它们应该作为替代品吗?是否有一些警告使用or而不是||?
Ed *_* S. 13
这里的问题是优先权. or优先级低于优先级||.所以,你的第一个语句评估为
(x = nil) or 4
Run Code Online (Sandbox Code Playgroud)
表达式的结果是4(这就是为什么你认为它在正常工作的原因irb),但是因为优先级低于do 而x被赋值.nilor=
该||版本可以满足您的需求:
x = (nil || 4)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5351 次 |
| 最近记录: |