【发布时间】:2012-06-28 14:36:06
【问题描述】:
我有一个围绕一些对象的包装类,我想将它们用作哈希中的键。包装对象和解包装对象应该映射到同一个键。
一个简单的例子是这样的:
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。 -
感谢@Marc-AndréLafortune!今天学到了一些新东西