2016-04-24 5 views
0

ich durch „Lernen Ruby den Hard Way“ werde und ich kam in das Verfahren print_a_line in Übung 20.Ausdrucken einer Zeile einer Datei in einem Ruby-Skript

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) 

Diese Methode zu nehmen ist, um die aktuelle Zeilenanzahl und Ausgabe an den Terminal nur den Inhalt der Datei aus dieser Zeile. Ich verstehe nicht, wie die Methode weiß, die Zeile der Datei zu drucken, die current_line zugeordnet ist. Wenn ich mir das anschaue, würde ich denken, #{f.gets.chomp) würde den gesamten Inhalt der Datei zurückgeben. Wie kann die Methode die current_line betrachten und die zugehörige Zeile der Datei ausdrucken?

Antwort

2

Die in print_a_line aufgerufene Methode gets liest eine einzelne Zeile aus der Datei (nicht den gesamten Inhalt). Das Objekt File, auf das von current_file verwiesen wird, verfolgt die aktuelle Position innerhalb der Datei, so dass jedes Mal, wenn gets aufgerufen wird, die nächste Zeile zurückgegeben wird.

Nichts untersucht current_line, um zu bestimmen, welche Zeile gelesen werden soll.

+0

Vielen Dank für die Erklärung! – adamscott

Verwandte Themen