我正在阅读“Learn Ruby the Hard Way”,在练习 20 中有一段我不理解的代码。我不明白为什么在函数“print_a_line”中对 f 调用gets.chomp。
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)
因此,我不明白输出的第二部分是如何产生的。我知道这是传递到代码中的 test.txt 文件的前 3 行,但我不明白 f.gets.chomp 是如何产生这个的。
$ ruby ex20.rb test.txt
First let's print the whole file:
This is line 1
This is line 2
This is line 3
Now let's rewind, kind of like a tape.
Let's print three lines:
1, This is line 1
2, This is line 2
3, This is line 3