私はハッシュのキーとして使用したいオブジェクトの周りにラッパークラスを持っています。 wrappedオブジェクトとunwrapperオブジェクトは、同じキーにマップする必要があります。鍵を比較するときにRubyのハッシュを使用する平等テストはありますか?
簡単な例は、このようになります。
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
私はEQ、==、===試してみましたか?すべて無駄にハッシュします。
あなたは、@のinner' 'にほとんどのメソッドを委譲したい場合は、' SimpleDelegator'に見たいと思うかもしれません。 –
Thanks @ Marc-AndréLafortune!今日何か新しいことを学んだ – alexloh