Jaki jest właściwy sposób implementacji równości w rubinie
Dla prostej klasy strukturalnej:
class Tiger
attr_accessor :name, :num_stripes
end
jaki jest właściwy sposób prawidłowego wdrożenia równości, aby to zapewnić==
, ===
, eql?
, itd., i tak, że instancje klasy grają ładnie w zestawach, haszy itp.
EDYTOWAĆ
Ponadto, jaki jest miły sposób na wprowadzenie równości, gdy chcesz porównać na podstawie stanu, który nie jest wystawiony poza klasą? Na przykład:
class Lady
attr_accessor :name
def initialize(age)
@age = age
end
end
tutaj chciałbym, aby moja metoda równości wzięła pod uwagę @age, ale Pani nie naraża swojego wieku na klientów. Czy w tej sytuacji musiałbym użyć instance_variable_get?