Mam klasy otoki wokół niektórych obiektów, które chcę użyć jako klucze w mieszanie. Zawinięte i rozwijane obiekty powinny zostać odwzorowane na ten sam klucz.Który test równości używa Ruby's Hash podczas porównywania klawiszy?
Prostym przykładem będzie to:
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
Próbowałem ==, ===, eq? i hash wszystko na próżno.
Możecie zajrzeć do 'SimpleDelegator', jeśli chcesz przekazać większość metod na' @ inner'. –
Dzięki @ Marc-AndréLafortune! Nauczyłem się czegoś nowego dzisiaj – alexloh