Как правильно реализовать равенство в ruby?
Для простого структурированного класса:
class Tiger
attr_accessor :name, :num_stripes
end
как правильно реализовать равенство, чтобы убедиться, что==
, ===
, eql?
и т. д. работают, и поэтому экземпляры класса хорошо воспроизводятся в наборах, хэшах и т. д.
РЕДАКТИРОВАТЬ
Кроме того, каков хороший способ реализовать равенство, если вы хотите сравнить на основе состояния, которое не отображается вне класса? Например:
class Lady
attr_accessor :name
def initialize(age)
@age = age
end
end
здесь я хотел бы, чтобы мой метод равенства учитывал @age, но Леди не раскрывает свой возраст клиентам. Должен ли я использовать instance_variable_get в этой ситуации?