gpt4 book ai didi

ruby - 为什么 ruby​​ inject 方法不返回方法内的总和

转载 作者:数据小太阳 更新时间:2023-10-29 07:49:23 24 4
gpt4 key购买 nike

我在练习 ruby​​ 注入(inject)方法时发现了一个奇怪的输出:

def adding(*num)
res = num.inject{|sum,n| sum + n}
puts "sum:::::::::::::::::::#{res.inspect}"
puts "sum:::::::::::::::::::#{res.class}"
end

adding ([1,2,3,4,5])

输出:

sum:::::::::::::::::::[1, 2, 3, 4, 5]
sum:::::::::::::::::::Array

当我们这样做的时候:

[1,2,3,4,5].inject{|sum,n| sum + n}

输出:

15

为什么会出现这种奇怪的输出?在方法调用中,adding([1,2,3,4,5]),也应该返回15。

出现这种奇怪输出的原因是什么?

最佳答案

num 不是你想的那样。

def adding(*num)
num # => [[1, 2, 3, 4, 5]]
end

adding([1,2,3,4,5])

要么不做splat

def adding(num)

或者单独传递数字

adding(1, 2, 3, 4, 5)

关于ruby - 为什么 ruby​​ inject 方法不返回方法内的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41090866/

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