gpt4 book ai didi

ruby - 将注入(inject)与哈希数组一起使用

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

我有一个散列数组,每个散列都有一个键lol,它有一个整数值。我想总结这些值,注入(inject)总是有效,但现在我得到一个异常(exception):

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

有什么事吗?

最佳答案

您可以使用flat_map(&:values) 获取所有哈希值,然后使用inject(:+) 对它们求和。

[{lol: 1}, {lol: 2}].flat_map(&:values).inject(:+)

您的方法不起作用的原因是注入(inject)将生成 block 的每个散列,而不是数组中每个散列的每个键/值对。如果你想保留你的解决方案,你会想要这样的东西:

array.map {|hash| hash.inject(0) {|memo, (key, value)| memo + value } }.inject(:+)

关于ruby - 将注入(inject)与哈希数组一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17695942/

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