1

这两种说法有什么区别:

! (name == "bob")

name != "bob"

在我看来,他们似乎都在做同样的事情。它们有什么不同,如果有的话?

4

2 回答 2

4

它们几乎相同。

  • ! (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'右侧,但不是因为方法被重新定义。

于 2015-04-26T22:54:57.607 回答
0

在我能想到的任何示例中,它们都会返回相同的结果,但是!在检查其他内容时(例如!my_array.include?("bob").

于 2015-04-26T22:28:36.853 回答