是not
和!
同义词,还是对它们的评估不同?
答案
它们几乎是同义词,但又不完全是同义词。!
优先级高于not
, 很像&&
和||
优先级高于and
和or
。
!
具有所有运算符的最高优先级,并且not
最低的之一,你可以找到Ruby 文档中的完整表格。
作为一个例子,请考虑:
!true && false
=> false
not true && false
=> true
在第一个例子中,!
有最高 优先级,所以你实际上是在说false && false
。
在第二个例子中,not
优先级低于true && false
,所以这"切换"了false
从true && false
到true
。
一般准则似乎是您应该坚持!
,除非您有特定的使用理由not
。!
Ruby 的行为与大多数其他语言相同,并且比not
。