这两种说法有什么区别:
! (name == "bob")
和
name != "bob"
在我看来,他们似乎都在做同样的事情。它们有什么不同,如果有的话?
它们几乎相同。
! (name == "bob")
调用两个方法!
和==
. 你可以这样写name.==('bob').!
。name != "bob"
只调用一种方法!=
。name.!=('bob')
.除非您重新定义!=
,否则您不必担心这两个选项。在大多数情况下,它们是相同的。
这是一个如何打破它的例子:
name = 'bob'
def name.!= s
true
end
name.!=('bob') # => true
name.==('bob').! # => false
您可能期望第一个结果是false
因为'bob'
左侧(变量name
)等于'bob'
右侧,但不是因为方法被重新定义。
在我能想到的任何示例中,它们都会返回相同的结果,但是!
在检查其他内容时(例如!my_array.include?("bob")
.