2, "d2" => 3} array2 = { "d1" => 3, "d3" => 10} 我想要这个: array3 = { "d1"=> 5, "d2"=-6ren">
gpt4 book ai didi

ruby - 在散列中添加值

转载 作者:数据小太阳 更新时间:2023-10-29 08:19:13 25 4
gpt4 key购买 nike

array1 = { "d1" => 2, "d2" => 3}
array2 = { "d1" => 3, "d3" => 10}

我想要这个:
array3 = { "d1"=> 5, "d2"=> 3, "d3"=> 10}

我试过了,不行。我收到错误:"NoMethodError: undefined method `+' for nil:NilClass"

array3 = {}
array1.each {|key, count| array3[key] += count}
array2.each {|key, count| array3[key] += count}

最佳答案

你收到错误是因为 array1.each尝试访问 array3['d1'] ,它还不存在,所以它返回 nil作为值(value)。你只需要定义 array3更具体一点,使用 Hash.new告诉它分配 0默认为所有键。

array3 = Hash.new(0)
array1.each {|key, count| array3[key] += count}
array2.each {|key, count| array3[key] += count}

但要小心前进:作为默认值传递的对象可以修改,所以如果你要写 my_hash = Hash.new(Array.new); my_hash[:some_key] << 3然后接收默认值的所有键将共享同一个对象。这是 Ruby 中那些奇怪的问题之一,你会想要使用 Hash.new 的 block 版本。在那种情况下。

关于ruby - 在散列中添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com