2016-04-24 40 views
0

我通過「學習紅寶石辛苦」的打算,我在鍛鍊整個方法print_a_line來到20打印出文件中的一行Ruby腳本

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中調用的gets方法從文件(而不是整個內容)中讀取一行。由current_file引用的File對象跟蹤文件中的當前位置,因此每次調用gets時,都會返回下一行。

沒有什麼是在看current_line來確定要讀取的行。

+0

謝謝你的解釋! – adamscott