Как правильно реализовать равенство в 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 в этой ситуации?

Ответы на вопрос(3)

Ваш ответ на вопрос