【问题标题】:No Method Error when using .sum to an array in Ruby使用 .sum 到 Ruby 中的数组时没有方法错误
【发布时间】:2019-10-15 08:11:23
【问题描述】:

下面的函数在计算给定数组的总和时会抛出 NoMethodError。

通过打印结果“p”,它应该返回 10。

p [1,2,3,4].sum
#=> 10

我没有得到求和的结果,而是得到下面的错误。

undefined method `sum' for [1, 2, 3, 4]:Array (NoMethodError)

【问题讨论】:

  • sum 是在 Ruby 2.4 中添加的,您可能运行的是旧版本。
  • 你可以做[1,2,3,4].inject(:+)
  • 根据哪个 Ruby 文档?您是否 100% 确定您正在阅读的文档是针对您的 Ruby 版本而不是其他版本的?

标签: ruby sum nomethoderror


【解决方案1】:

通过ruby -v检查您使用的ruby 版本

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

[1, 2, 3, 4].inject(0,:+)

以上是简写

   [1, 2, 3, 4].inject(0) {|sum, value| sum + value}

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

【讨论】:

  • 您可能希望传递一个默认值,即 ary.inject(0, :+) 以说明空数组。
  • 谢谢,我的版本问题是2.3.7,不是2.4。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 1970-01-01
  • 2020-11-06
  • 1970-01-01
  • 2013-12-10
  • 1970-01-01
相关资源
最近更新 更多