我已經有了一個默認proc的哈希,我想編組爲一個文件,但默認proc阻止我這樣做。紅寶石散列與默認proc - 刪除默認proc?
而不是寫我自己的_dump
和_load
方法,而不是刪除默認的proc而不是?在我編組的地方,我再也不需要默認的proc了。
我已經有了一個默認proc的哈希,我想編組爲一個文件,但默認proc阻止我這樣做。紅寶石散列與默認proc - 刪除默認proc?
而不是寫我自己的_dump
和_load
方法,而不是刪除默認的proc而不是?在我編組的地方,我再也不需要默認的proc了。
只是重置默認:
h.default = nil
更明確地說:
def dumpable_hash(h)
return h unless h.default_proc
copy = h.clone
copy.default = nil # clear the default_proc
copy
end
在Ruby 2.0,你也can寫h.default_proc = nil
如果你喜歡。適用於require 'backports/2.0.0/hash/default_proc'
的所有紅寶石。
如果你想有一個副本,不違約,最簡單的方法 -
Hash[hash_with_defaults]
原來'h.default = nil'清除默認PROC - 這就是我需要的。謝謝! – 2010-09-29 04:30:17
也可以轉儲具有默認值對象的散列,例如'Hash.new(42)'。並不是說我喜歡擁有默認值對象,除非它們是不可變的。 – 2011-06-30 23:19:37