Tengo una clase contenedora alrededor de algunos objetos que quiero usar como claves en un Hash. Los objetos envueltos y desenvueltos deberían corresponder a la misma clave.¿Qué prueba de igualdad utiliza Ruby's Hash al comparar claves?
Un ejemplo sencillo será la siguiente:
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 fue en vano.
Es posible que desee ver en 'SimpleDelegator', si desea delegar la mayoría de los métodos a' @ inner'. –
¡Gracias @ Marc-AndréLafortune! Aprendí algo nuevo hoy – alexloh