LRTHW упражнение 20 странный выход

Для этого упражнения я написал весь код идеально и даже дважды проверил, буквально скопировав и вставив код из книги (Learn Ruby the Hard Way). По какой-то причине, когда я звоню print_a_line() функция не распечатает current_line Аргумент, который я передаю до 3-го вызова, где он напечатает 3 перед строкой. Есть какой-то сброс потока ввода-вывода, который я здесь пропускаю, или какой-то нюанс с Powershell?

Я использую Ruby 2.0.0p576 (x64) на 64-битной машине с Windows 8.

Код:

input_file = ARGV.first

def print_all(f)
  puts f.read
end

def rewind(f)
  f.seek(0)
end

def print_a_line(line_count, f)
  puts "#{line_count}, #{f.gets.chomp}"
end

current_file = open(input_file)

puts "First let's print the whole file:\n"

print_all(current_file)

puts "Now let's rewind, kind of like a tape."

rewind(current_file)

puts "Let's print three lines:"

current_line = 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

1 ответ

Я удалил файл test.txt и воссоздал его с нуля, и это заставило код работать отлично. Я не уверен на 100%, почему, но у меня есть догадка, что из-за повторного использования этого файла во многих различных тестах и ​​воспроизведения в Powershell я случайно оставил в файле некоторое странное форматирование, вызывающее его поведение по-разному.

Другие вопросы по тегам