Неопределенный метод `% 'для nil: NilClass (NoMethodError) Ruby on Rails - PullRequest
0 голосов
/ 06 мая 2020

Получение неопределенной ошибки метода для '%' для 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

Не могу определить проблему; предполагается, что метод принимает массив целых чисел и возвращает сумму всех нечетных элементов.

Ответы [ 2 ]

2 голосов
/ 06 мая 2020

Предположим, что число [1,2,3,4], когда я увеличиваюсь до 4, числа [4] вернут ноль

Условие должно быть i < numbers.length

Вместо этого использования while, вы также можете использовать inject

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

0 голосов
/ 06 мая 2020

Вы можете использовать массивы от go до в ruby docs. ruby - один из элегантно написанных языков. меньше кода для достижения того же результата. Как следует из решения, это будет

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...