我有一個包裝類,我想在哈希中用作鍵。包裝和解包器對象應映射到相同的密鑰。在比較密鑰時,Ruby的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
我試過==,===,情商?並散列所有無濟於事。
你可能想看看'SimpleDelegator',如果你想委派最方法'@ inner'。 –
謝謝@ Marc-AndréLafortune!今天學到了新東西 – alexloh