неверное значение в аргументе range error - относительно построения диапазона в ruby - PullRequest
0 голосов
/ 24 декабря 2018

Я написал следующий фрагмент.

def add_me(num)
    result = 0
    (1..num).each { |i| result += i}
    result
end
puts add_me(STDIN.gets)

Я получил ошибку аргумента list_sum.rb:6:in 'AddMe': bad value for range (ArgumentError) строка # соответствует строке # в моем редакторе.

Я также экспериментировал с такими вещами, как foo = (1..num).to_a.Но все равно получаю ту же ошибку.Что здесь происходит?Ruby версия 2.3.3.Чего мне не хватает?Я должен иметь возможность использовать переменные в диапазонах, нет?

1 Ответ

0 голосов
/ 24 декабря 2018

gets возвращает строку.Вам нужно сделать gets.to_i, чтобы превратить ввод в число для вашего числового диапазона.Прямо сейчас вы пытаетесь создать диапазон, где начало - это число 1, а конец - какая-то строка, и это поднимает ArgumentError.

Кроме того, как правило, соглашение ruby ​​сообщит вам, чтоВаша функция должна быть названа add_me.В Ruby используется случай змеи, и все, что начинается с заглавной буквы, обычно считается классом или константой (константа - все заглавные буквы).

...