5
我想爲一個ruby類實現==
。我可以做Ruby中的「==」實現應該檢查類型嗎?
def ==(o)
o.respond_to?(:id) && self.id == o.id
end
或
def ==(o)
o.is_a?(Foo) && self.id == o.id
end
據this文章,似乎前者會更有意義。如果我正在實施eql?
那麼我會做後者。它是否正確?
'=='並不意味着即使'eql''有更具體的要求,它也必須超越類型。但是,如圖所示,它可能更有用,因爲它更基於結構。 – 2012-05-22 18:57:12
@pst你是說用'respond_to?'可以嗎? –
在這種情況下'id'是什麼?它是否與Object#object_id相同,或者它是活動記錄ID還是實例變量的訪問器? –