【发布时间】:2013-08-21 11:13:12
【问题描述】:
我用于 Ruby 运算符的参考是 http://phrogz.net/programmingruby/language.html#table_18.4 根据这个参考,以及我见过的其他参考,相等运算符优先于逻辑 AND(&&,而不是 Ruby 的 and)。
我有以下几点:
foo = nil
foo < 5 # NoMethodError: undefined method `<' for nil:NilClass
要检查foo,我们这样做:
foo && (foo < 5) # Note the parenthesis
但这有效:
foo && foo < 5 # why does this work?
由于运算符优先级,foo < 5 应该首先发生,导致在 AND 甚至可以计算之前出现错误。我错过了什么吗?
【问题讨论】:
-
简短回答:评估发生在标记化之后。下面有更详细的解释。
标签: ruby operator-precedence boolean-expression