根据docs, Array.include? strong>使用对象上的 == 比较。我来自Java,其中(通常)使用 .equals()完成这些操作,这很容易覆盖特定对象。
如何在Ruby中覆盖 == 以允许我为特定对象指定 Array.include? strong>的行为?
非常感谢。
答案 0 :(得分:66)
在Ruby中==
只是一种方法(在顶部有一些语法糖,允许你编写foo == bar
而不是foo.==(bar)
)并覆盖==
就像你一样任何其他方法:
class MyClass
def ==(other_object)
# return true if self is equal to other_object, false otherwise
end
end
答案 1 :(得分:0)
如上所述,==是Ruby的方法,可以被覆盖。您只需写下平等条件。
class Person
attr_reader :name, :gender, :social_id
attr_accessor :age
def initialize(name, age, gender, social_id)
self.name = name
self.age = age.to_i
self.gender = gender
self.social_id = social_id
def ==(other)
social_id == other.social_id
您不再需要覆盖其他方法