ruby - 红宝石中的`not`和`!`之间的区别




boolean-logic (2)

它们几乎是同义词,但不完全相同。 区别在于 ! 具有较高的优先级,非常像 &&|| 的优先级高于 andor

! 在所有运算符中具有最高的优先级,而 not 最低的之一,可以 在Ruby docs上 找到 完整表

例如,请考虑:

!true && false
=> false

not true && false
=> true

在第一个示例中, ! 具有 最高的 优先级,因此您实际上是在说 false && false
在第二个示例中,优先级不低于 true && false ,因此这将 falsetrue && false 切换为 true

一般准则似乎是您应该坚持 ! ,除非您有特定的理由不使用。 ! Ruby中的Ruby行为与大多数其他语言相同,并且“毫不奇怪”。

我记得在某处 not 读书 ! 评估方式有所不同,我在文档中找不到它。 他们是同义词吗?


理解 not 运算符的一种简单方法是将 not true && false 视为等同于 !(true && false)





boolean-logic