深度合并哈希(添加值)



我需要合并几个哈希。我的意思是拥有:

a = {:x => 72, :y => 2}
b = {:x => 34, :y => 24}
c = a.deep_merge!(b) 

并且CCD_ 1是CCD_。

Crystal中是否有Ruby中类似deep_merge的功能?

编辑:真正的hash更多复杂的

{"request" => {"duration" => 15100012.0, "total" => 252562.0, "per_second" => 16725.0, "bytes" => 43440664.0}, "error" => {"socket" => 0.0, "read" => 25.0, "write" => 0.0, "http" => 0.0, "timeout" => 0.0}, "latency" => {"minimum" => 234.0, "maximum" => 219466.0, "average" => 7640.0, "deviation" => 12940.0}, "percentile" => {"fifty" => 2732.0, "ninety" => 20335.0, "ninety_nine" => 65824.0, "ninety_nine_ninety" => 199536.0}}

事实上,它是在hash中用PullParser转换的json

我的最终目标是添加创建一个新的哈希,该哈希由循环上该哈希的值组成

您所描述的不是深度合并(递归操作(,而是一种自定义合并策略。

它可以通过调用带有块的Hash#merge来解决:

a = {:x => 72, :y => 2}
b = {:x => 34, :y => 24}
c = a.merge(b) { |_, v1, v2| v1 + v2 }
pp c # => {:x => 106, :y => 26}

最新更新