Ruby 否定表达

Ruby 否定表达,ruby,negation,Ruby,Negation,这两种说法有什么区别吗 ! (name == "bob") 及 在我看来,他们似乎做了同样的事情。如果有的话,它们有什么不同呢?在我能想到的任何例子中,它们都会返回相同的结果,但是放置可能会有帮助,但在我能想到的任何示例中,它们将返回相同的结果,但在检查其他内容(例如,!my_array.include?(“bob”)时,将!放在表达式前面可能会有帮助它们几乎是一样的 !(name==“bob”)调用两个方法!和=。您可以像name.==('bob')那样编写它。! name!=“bob”只

这两种说法有什么区别吗

! (name == "bob")


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

在我能想到的任何例子中,它们都会返回相同的结果,但是放置
!my_array.include?(“bob”)
时,表达式前面的code>可能会有帮助,但在我能想到的任何示例中,它们将返回相同的结果,但在检查其他内容(例如,
!my_array.include?(“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'
,但事实并非如此,因为方法已重新定义。

它们几乎相同

  • !(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'
,但事实并非如此,因为方法被重新定义。

它是相同的。这就像询问
5-1
5+-1之间的区别一样
我们是在问性能问题(如果我们只是在讨论字符串还是不同的对象和实现,可能会产生差异)?…还是我们在讨论最终结果(除非
!=
=
方法没有按预期运行,否则它们是相同的)这是一样的。这就像问
5-1
5+-1
之间的区别是什么?我们是在问性能问题(这可能会有差异,这取决于我们是在谈论字符串还是不同的对象和实现)?…还是在谈论最终结果(除非
#!=
#=
方法没有按预期运行,否则它们是相同的)?