Ich möchte ==
für eine Rubin-Klasse implementieren. Ich kann nach this ArtikelSollte eine "==" Implementierung in Ruby den Typ prüfen?
def ==(o)
o.respond_to?(:id) && self.id == o.id
end
oder
def ==(o)
o.is_a?(Foo) && self.id == o.id
end
tun, es scheint, dass die erstere würde mehr Sinn machen. Wenn ich eql?
implementieren würde, würde ich das letztere tun. Ist das richtig?
'==' bedeutet * nicht, dass es Typen transzendieren muss, selbst wenn 'eql?' Eine spezifischere Anforderung hat. Es kann jedoch nützlich sein, dass es strukturierter ist, wie gezeigt. –
@pst Willst du sagen, dass 'respond_to? 'In Ordnung ist? –
Was ist ID in diesem Szenario? Ist es das gleiche wie Object # object_id oder ist es eine aktive Record-ID oder ein Accessor für eine Instanzvariable? –