【问题标题】:Undefined method `%' for nil:NilClass (NoMethodError) Ruby on Railsnil:NilClass (NoMethodError) Ruby on Rails 的未定义方法“%”
【发布时间】:2020-05-06 05:54:15
【问题描述】:

为 nil:NilClass (NoMethodError) 获取 '%' 的未定义方法错误

这是我拥有的简单功能:

def oddball_sum(numbers)
  i =0
  arr = []

  while i <= numbers.length
     if numbers[i] % 2 != 0
     arr << numbers[i]
     end
     i +=1
  end
   return arr.sum
end

无法确定问题;该方法应该接受一个整数数组并返回所有奇数元素的总和。

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    假设numbers是[1,2,3,4],当我增加到4时,numbers[4]会返回nil

    条件应该是i &lt; numbers.length

    除了while,你也可以使用inject

    numbers.inject(0) { |sum, i| i % 2 != 0 ? sum + i : sum }

    【讨论】:

    • 感谢您解决了这个问题:另外,当我测试 'print oddball_sum([1,2,3,4])' 我的输出是 0,而不是 4。有什么建议吗?
    【解决方案2】:

    你可以通过arrays on the ruby docs ruby​​ 是优雅的语言之一。更少的代码来实现相同的结果。按照解决方案这样做

    numbers.select {|num| num.odd? }.sum

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-06
      • 2013-03-04
      • 1970-01-01
      • 2022-11-21
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多