对数组使用.sum时没有方法错误

Sta*_*sto 3 ruby sum nomethoderror

我找到了其他方法,但是根据ruby文档,这应该可行吗?

p [1,2,3,4].sum
#=> 10
Run Code Online (Sandbox Code Playgroud)

相反,我得到了..

undefined method `sum' for [1, 2, 3, 4]:Array (NoMethodError)
Run Code Online (Sandbox Code Playgroud)

Ste*_*zyn 5

检查您使用的红宝石版本 ruby -v

如果您使用的版本早于2.4,则可以使用inject代替。

[1, 2, 3, 4].inject(0,:+)
Run Code Online (Sandbox Code Playgroud)

以上是的简写

   [1, 2, 3, 4].inject(0) {|sum, value| sum + value}
Run Code Online (Sandbox Code Playgroud)

0需要零来处理空数组,否则将返回nil