代码之家  ›  专栏  ›  技术社区  ›  Stewart Johnson

用默认进程封送ruby哈希-删除默认进程?

  •  11
  • Stewart Johnson  · 技术社区  · 14 年前

    我有一个带有默认进程的散列,我想将其封送到一个文件,但是默认进程阻止我这样做。

    而不是自己写 _dump _load 方法,是否可以删除默认进程?在我进行编组的时候,我再也不需要默认进程了。

    2 回复  |  直到 12 年前
        1
  •  15
  •   Marc-André Lafortune    11 年前

    只需重置默认值:

    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' .

        2
  •  6
  •   UncleGene    13 年前

    如果您想要一个没有默认值的副本,最简单的方法-

    Hash[hash_with_defaults]