这两个陈述之间是否有任何区别:
! (name == "bob")
和
name != "bob"
对我而言,似乎他们都做同样的事情。如果有的话,它们有何不同?
答案 0 :(得分: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'
,但它不是因为该方法被重新定义。
答案 1 :(得分:0)
那些会在我能想到的任何例子中返回相同的结果,但在检查其他内容时(例如!
),将!my_array.include?("bob")
放在表达式之前会有所帮助。