ArgumentError неверное количество аргументов (задано 0, ожидается 1) - PullRequest
0 голосов
/ 07 ноября 2018

Я написал программу для кодовых войн, которая находит два младших целых числа и возвращает их сумму:

def sum_two_smallest_numbers(numbers)
  array_lowest = [0, 0]
  main_iterate = 2
  array_lowest[0] = sum_two_smallest_numbers[0]
  array_lowest[1] = sum_two_smallest_numbers[1]
  until main_iterate == sum_two_smallest_numbers.length - 1 #maybe -2, or 0
    if sum_two_smallest_numbers[main_iterate] < array_lowest[0]
      array_lowest[0] = sum_two_smallest_numbers[main_iterate]
      main_iterate += 1
    elsif sum_two_smallest_numbers[main_iterate] < array_lowest[1]
      array_lowest[1] = sum_two_smallest_numbers[main_iterate]
      main_iterate += 1
    else
      main_iterate += 1
    end
  end
  return array_lowest[0] + array_lowest[1]
end

выполнить тесты следующим образом:

Test.assert_equals(sum_two_smallest_numbers([5, 8, 12, 18, 22]), 13) 
Test.assert_equals(sum_two_smallest_numbers([7, 15, 12, 18, 22]), 19) 
Test.assert_equals(sum_two_smallest_numbers([25, 42, 12, 18, 22]), 30) 

Он жалуется на мою первую строку (это было предоставлено вместе с end), и если я заменю numbers на любые действительные числа, как в тестовых примерах, он выдает следующее:

syntax error, unexpected tINTEGER, expecting ')'

Как я могу решить это?

1 Ответ

0 голосов
/ 07 ноября 2018

Вы рекурсивно вызываете sum_two_smallest_numbers без аргументов., И это требует аргумента. Каждый раз, когда вы пишете sum_two_smallest_numbers, это вызов метода. Когда вы пишете sum_two_smallest_numbers[0], это вызов метода без аргументов, [0] будет обращаться к 0-му элементу возвращаемого значения, если вызов выполнен успешно.

Похоже, вы хотели numbers[0], sum_two_smallest_numbers[0].

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