0
filename = ARGV.first
txt = open filename
puts "Here's your file #{filename}:"
print txt.read
puts "Type the filename again: "
file_again = $stdin.gets.chomp
txt_again = open file_again
print txt_again.read
close(txt)
close(txt_again)
Программа прекрасно работает до конца, но вылетает с сообщением об ошибке под названием сразу после печати содержимого второго файла.Неопределенный метод «закрыть» для главного: Object (NoMethodError) в Рубине
Я проверил txt, txt_again, используя (.class), и подтвердил, что оба являются объектами File. Почему не работает?
в то время как ответ является технически правильным для использования 'File.read (TXT)' или 'File.open (.txt, &: чтение)' как само закрытие. Это означает, что вы можете открыть и прочитать файл без необходимости его закрытия. – engineersmnky
@engineersmnky Я никогда не видел этот синтаксис 'File.open (txt, &: read)': D –
@engineersmnky Согласно этому http://stackoverflow.com/questions/5545068/what-are-all-the-common -ways-to-read-a-file-in-ruby, только File.open (txt, &: read) является самозакрывающимся, File.read (txt) - нет. Открытый метод должен быть передан блоком для его самозакрывания –