Функция gets
вернет строку с символом конца строки в конце, который не соответствует ожидаемому. Чтобы удалить его, используйте функцию chomp:
@response = gets.chomp
Это нормально для метода (например, unzip
) для создания новых переменных экземпляра (например, @valueholder
). В общем случае для ваших переменных всегда лучше иметь наименьшую возможную область видимости, поэтому, если вам не нужно читать valueholder
позже, вам следует просто использовать локальную переменную (уберите @
из имени):
Dir["DobbsyKrett-"+@response+".txt"].each do |file_nom|
valueholder = File.read(file_nom)
end
puts valueholder
Кроме того, valueholder
- ужасное имя для переменной, но если вы сделали ее локальной переменной, которая могла бы быть оправдана.
Кроме того, ваши начальные / конечные блоки не совпадают. Вот исправленная версия вашей функции, которая не должна приводить к синтаксическим ошибкам:
def unzip
puts "Do you want to withdraw PLAN or REM"
response = gets.chomp.downcase
if !["plan","rem"].include? response
puts "Invalid"
else
Dir["DobbsyKrett-#{response}.txt"].each do |file_nom|
valueholder = file.read(file_nom)
end
puts valueholder
end
end
Редактировать: Вы должны использовать File
для правильного вызова File.read
.
.