def deep_merge!(other_hash)
      other_hash = self.class.new(other_hash) unless other_hash.is_a?(self.class)

      other_hash.each_pair do |k,v|
        tv = self[k]

        unless v.is_a?(self.class)
          v = self.class.new(v) if v.is_a?(Hash)
        end

        self[k] = tv.is_a?(self.class) && v.is_a?(self.class) ? tv.deep_merge(v) : v
      end

      self
    end
def deep_merge!(other_hash)
      other_hash = self.class.new(other_hash) unless other_hash.is_a?(self.class)

      other_hash.each_pair do |k,v|
        tv = self[k]

        unless v.is_a?(self.class)
          v = self.class.new(v) if v.is_a?(Hash)
        end

        self[k] = tv.is_a?(self.class) && v.is_a?(self.class) ? tv.deep_merge(v) : v
      end

      self
    end
深层的合并