2016-04-24 2 views
0

Я иду через «Учиться рубиновый трудный путь», и я наткнулся на метод print_a_line в упражнении 20.Распечатка одной строки файла в сценарии Руби

input_file = ARGV.first 
current_file = open(input_file) 

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

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) 

Этот метод собирается взять текущее количество строк и вывод на терминал только содержимого файла из этой строки. Я не понимаю, как метод знает, чтобы напечатать строку файла, связанного с current_line. Когда я посмотрю на это, я думаю, что #{f.gets.chomp) вернет все содержимое файла. Как метод знает, посмотреть на current_line и распечатать связанную строку файла?

ответ

2

Метод, вызываемый в print_a_line, считывает одну строку из файла (не все содержимое). Объект File, на который ссылается current_file, отслеживает текущую позицию в файле, поэтому каждый раз, когда вызывается gets, возвращается следующая строка.

Ничто не смотрит на current_line, чтобы определить, какую строку читать.

+0

Благодарим за объяснение! – adamscott

Смежные вопросы