not和 !是同义词,还是它们的评价不同?
not
!
它们几乎是同义词,但不完全是。不同之处在于,!的优先级比 not高,很像 &&和 ||的优先级比 and和 or高。
&&
||
and
or
在所有操作符中,!的优先级最高,而 not的优先级最低,可以找到 Ruby 文档的完整表格。
例如:
!true && false => false not true && false => true
在第一个示例中,!具有 最高的优先级,因此实际上就是说 false && false。 在第二个示例中,not的优先级低于 true && false,因此这将 false从 true && false“切换”到 true。
false && false
true && false
false
true
一般的指导方针似乎是您应该坚持使用 !,除非您有使用 not的特定原因。在 Ruby 中,!的行为与大多数其他语言相同,并且比 not“不那么令人惊讶”。
理解 not操作符的一个简单方法是将 not true && false看作等价于 !(true && false)
not true && false
!(true && false)
我在这里有一个 RSpec 驱动的示例: “ a href =”https://richstone.io/rubys-not-key-is-not-not-but-not/”rel = “ nofollow noReferrer”> Ruby 的 not 关键字 is not but! (not)
实质上: