作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
2, "d2" => 3} array2 = { "d1" => 3, "d3" => 10} 我想要这个: array3 = { "d1"=> 5, "d2"=-6ren">
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/
我是一名优秀的程序员,十分优秀!