我无法管理哈希子类Marshal.load
的Marshal.dump
ed 实例:
class MarshalDumpableHash < Hash
def initialize(constructor = {})
if constructor.is_a?(Hash)
super()
update(constructor)
else
super(constructor)
end
end
def marshal_dump
p self
self
end
def marshal_load(hash)
p hash
update(hash)
end
end
h = { asd: 'ciao' }
p MarshalDumpableHash.new(h) #=> {:asd=>"ciao"}
p Marshal.dump(MarshalDumpableHash.new(h)) #=> "\x04\bU:\x18MarshalDumpableHash@\x00"
p Marshal.load(Marshal.dump(MarshalDumpableHash.new(h))) #=> {} WHY?
方法内部打印,而方法p self
内部打印的对我来说听起来很奇怪marshal_dump
{:asd=>"ciao"}
marshal_load
{}