`
花花公子
  • 浏览: 130288 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

新学到的Hash#merge的用法

    博客分类:
  • ruby
 
阅读更多
Hash#merge 可以接受 block of 3 arguments

比如对于数组中每个Hash对于相同的key把value相加作为新的值
v = [{ "Server" => 1, "Desktop" => 2},{"Server" => 3, "Desktop" => 4, "Mobile" => 5 }]

可以用

v.reduce do |result, hash| 
  hash.merge(result) do |key, old_value, new_value| old_value + new_value end
end


也可以用map来解决
v.reduce do |result, hash|
  Hash[hash.map { |k,v| [k, (result[k].to_i) +v ] }]
end


效率还没有benchmark过,不过map应该更加通用一些
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics