¿Qué prueba de igualdad utiliza el hash de Ruby al comparar claves?
Tengo una clase de envoltorio alrededor de algunos objetos que quiero usar como claves en un Hash. Los objetos envueltos y desenvueltos deben asignarse a la misma clave.
Un ejemplo simple será este:
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
He intentado ==, ===, eq? y hash todo en vano.