我有一个散列数组,每个散列都有一个带整数值的键lol
。我想对这些值求和,inject总是有效的,但现在出现了一个异常:
array = [{lol: 1}, {lol: 2}]
array.inject {|memo, (key, value)| memo + value} =>
NoMethodError: undefined method `+' for {:lol=>1}:Hash
from (irb):26:in `block in irb_binding'
from (irb):26:in `each'
from (irb):26:in `inject'
from (irb):26
Por que?
最佳答案
如果没有为inject
指定参数,则第一次迭代的memo对象的值是可枚举的第一个元素,在本例中是散列。所以你只要把0
作为参数传递给inject
:
array = [{lol: 1}, {lol: 2}]
array.inject(0) { |sum, h| sum + h[:lol] }
# => 3
关于ruby - 结合使用哈希数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17695942/