gpt4 book ai didi

ruby - 如何获取注入(inject)循环的每个值

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

我想获取inject 的每个值。

例如[1,2,3].inject(3){|sum, num| sum + num} 返回 9,我想获取循环的所有值。我尝试了 [1,2,3].inject(3).map{|sum, num| sum + num},但没有成功。

我写的代码是这样的,但是我觉得是多余的。

a = [1,2,3]
result = []
a.inject(3) do |sum, num|
v = sum + num
result << v
v
end

p result
# => [4, 6, 9]

有没有办法同时使用injectmap

最佳答案

使用专用的 Eumerator 非常适合这里,但我会为此展示更通用的方法:

[1,2,3].inject(map: [], sum: 3) do |acc, num|
acc[:map] << (acc[:sum] += num)
acc
end
#⇒ => {:map => [4, 6, 9], :sum => 9}

这样(使用哈希作为累加器)一个人可能会收集她想要的任何东西。 旁注:最好在此处使用Enumerable#each_with_object 而不是inject,因为前者不会在每次后续迭代中生成对象的新实例:

[1,2,3].each_with_object(map: [], sum: 3) do |num, acc|
acc[:map] << (acc[:sum] += num)
end

关于ruby - 如何获取注入(inject)循环的每个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39930291/

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