¿Cuál es la forma correcta de implementar la igualdad en ruby?
Para una clase de estructura simple:
class Tiger
attr_accessor :name, :num_stripes
end
¿Cuál es la forma correcta de implementar la igualdad correctamente, para garantizar que==
, ===
, eql?
, etc., y para que las instancias de la clase jueguen bien en conjuntos, hashes, etc.
EDITAR
Además, ¿cuál es una buena manera de implementar la igualdad cuando se quiere comparar según el estado que no está expuesto fuera de la clase? Por ejemplo:
class Lady
attr_accessor :name
def initialize(age)
@age = age
end
end
Aquí me gustaría que mi método de igualdad tenga en cuenta a @age, pero la Dama no expone su edad a los clientes. ¿Tendría que usar instance_variable_get en esta situación?