类似于 WeakHash 的东西就可以做到。这是一个更完整的实现,可以处理 Fixnums、Symbols 和 Floats(以及其他不可变类型,如果将它们添加到列表中):
class WeakHash < Hash
def []=(k, v)
if(![Fixnum, Symbol, Float].include? k.class)
k = WeakRef.new(k)
end
if(![Fixnum, Symbol, Float].include? v.class)
v = WeakRef.new(v)
end
super k,v
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
830 次 |
| 最近记录: |