Ste*_*son 11 ruby hash marshalling
我有一个带有默认proc的哈希,我想将Marshal设置为一个文件,但默认的proc会阻止我这样做.
而不是写我自己_dump和_load方法,是有可能,而不是删除默认PROC呢?在我编组时,我永远不会再需要默认的proc.
Mar*_*une 14
只需重置默认值:
h.default = nil
Run Code Online (Sandbox Code Playgroud)
更明确地说:
def dumpable_hash(h)
return h unless h.default_proc
copy = h.clone
copy.default = nil # clear the default_proc
copy
end
Run Code Online (Sandbox Code Playgroud)
在Ruby 2.0中,如果您愿意,也可以编写h.default_proc = nil.适用于所有红宝石require 'backports/2.0.0/hash/default_proc'.