#ruby #string #methods #syntax-error #argv
#ruby #строка #методы #синтаксическая ошибка #argv
Вопрос:
Я создал эту программу для создания папки в каталоге программы, если есть ARGV.
def check_if_user_gave_input
abort("mkdir: missing input") if ARGV.empty?
end
def get_folder_name
return folder_name = ARGV.first
end
def create_folder(name)
Dir.mkdir(name)
end
def perform
folder_name = get_folder_name
create_folder(folder_name)
end
perform
Итак, если я запущу эту программу в своем терминале, все будет в порядке. Но, если я попробую это в своем терминале и ничего не напишу после $ ruby app.rb
того, как получу приятное сообщение об ошибке, подобное этому, и я не вижу строку "mkdir: missing input"
Traceback (most recent call last):
3: from app.rb:18:in `<main>'
2: from app.rb:15:in `perform'
1: from app.rb:10:in `create_folder'
app.rb:10:in `mkdir': no implicit conversion of nil into String (TypeError)
Как это исправить? Спасибо.
Ответ №1:
Просто добавьте check_if_user_gave_input
метод в perform
def check_if_user_gave_input
abort("mkdir: missing input") if ARGV.empty?
end
def get_folder_name
ARGV.first
end
def create_folder(name)
Dir.mkdir(name)
end
def perform
check_if_user_gave_input
folder_name = get_folder_name
create_folder(folder_name)
end
perform
Комментарии:
1. Хорошо, спасибо, это нужно было поместить в начало метода выполнения…