【发布时间】:2014-02-03 22:01:48
【问题描述】:
我一直在研究运算符优先级,有人向我解释x =! 5 返回false。我似乎无法再次向自己解释为什么。我知道=! 不是运营商,所以x 和5 仍然存在。那么这是否意味着 Ruby 不知道该怎么做呢?如果是这样,ruby 应该返回一个错误,因为x 可以没有价值? Ruby 是否在运算符处停止,然后将 false 的值分配给 x?
x =! 5
=> false
【问题讨论】:
-
而
x != 5(!=运算符测试不等式)当然会在未定义 x 时生成错误,或者如果 x 为 nil(或 5 以外的任何值),则true会生成错误。 -
除了优先级之外,BasicObject 是 Ruby 中所有类的父类 - 您可以在此处找到定义的
!。所有对象,当出现在一个条件中时,要么是真,要么是假。 Ruby 的灵活性允许许多变化!(5)、! 5、5.!或!5甚至!'hello'都将评估为 false。
标签: ruby boolean operator-precedence