Какой критерий равенства использует Ruby's Hash при сравнении ключей?

У меня есть класс-оболочка для некоторых объектов, которые я хочу использовать в качестве ключей в Hash. Обернутые и развернутые объекты должны отображаться на один и тот же ключ.

Простой пример будет таким:

class A
  attr_reader :x
  def initialize(inner)
    @inner=inner
  end
  def x; @inner.x; end
  def ==(other)
    @inner.x==other.x
  end
end
a = A.new(o)  #o is just any object that allows o.x
b = A.new(o)
h = {a=>5}
p h[a] #5
p h[b] #nil, should be 5
p h[o] #nil, should be 5

Я пробовал ==, ===, так? и хэш все безрезультатно.

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

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