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 "Let's rewind kind a like a tape"
rewind(current_file)
puts "Let's print three lines:"
current_line = 1
print_a_line(current_line, current_file)
current_line += 1
print_a_line(current_line, current_file)
Ich bin sicher, es gibt eine ähnliche Post, aber meine Frage ist ein bisschen anders. Wie oben gesehen, hat die print_a_line-Methode zwei Parameter erhalten, die line_count und f sind.Ein gets.chomp als Argument übergeben
1) Wie ich verstanden habe, dient line_count Argument nur als eine Variable, die current_line ist und es ist nur eine ganze Zahl. Wie kommt es zu dem Rücklauf (f) Verfahren betreffen, denn wenn ich den Code ausführen, wobei das Verfahren print_a_line dies zeigt:
1, Hi
2, I'm a noob
wobei 1 die erste Zeile ist, und 2 ist die zweite. line_count ist nur eine Zahl, woher weiß Ruby, dass 1 die Zeile 1 und 2 die Zeile 2 ist?
2) Warum verwenden gets.chomp in Methode print_a_line? Wenn ich wie dies nur f passieren
def print_a_line(line_count, f)
puts "#{line_count}, #{f}"
end
Ich werde ein verrücktes Ergebnis erhalten, die
1, #<File:0x007fccef84c4c0>
2, #<File:0x007fccef84c4c0>