我有一个散列数组,每个散列都有一个带整数值的键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/

10-13 08:49