Quiero implementar ==
para una clase de ruby. Puedo hacer¿Debe una implementación "==" en Ruby verificar el tipo?
def ==(o)
o.respond_to?(:id) && self.id == o.id
end
o
def ==(o)
o.is_a?(Foo) && self.id == o.id
end
Según this artículo, parece que el primero tendría más sentido. Si estuviera implementando eql?
, haría lo segundo. ¿Es esto correcto?
'==' no * significa * que tiene que trascender los tipos incluso si 'eql?' Tiene un requisito más específico. Sin embargo, podría ser útil que tenga una base más estructural, como se muestra. –
@pst ¿Estás diciendo que usar 'responder_a?' Está bien? –
¿Qué es 'id' en este escenario? ¿Es lo mismo que Object # object_id o es una identificación de registro activa o un acceso a una variable de instancia? –