Quelle est la bonne façon de mettre en œuvre l'égalité en ruby

Pour un simple struct-comme la classe:

class Tiger
  attr_accessor :name, :num_stripes
end

quelle est la bonne façon de mettre en œuvre l'égalité correctement, pour s'assurer que ==, ===, eql?, etc, et donc que les instances de la classe jouent bien dans les ensembles, hache, etc.

MODIFIER

Aussi, ce qui est une belle façon de mettre en œuvre l'égalité lorsque vous souhaitez comparer en fonction de l'état qui n'est pas exposée à l'extérieur de la classe? Par exemple:

class Lady
  attr_accessor :name

  def initialize(age)
    @age = age
  end
end

ici, j'aimerais que mon égalité méthode pour prendre @âge en compte, mais la Dame ne veut pas exposer de son âge pour les clients. Aurais-je à utiliser instance_variable_get dans cette situation?

InformationsquelleAutor Pete Hodgson | 2009-12-19