我正在经历“以艰难的方式学习Ruby”,我在练习20中遇到了方法print_a_line
。
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
并打印出文件的相关行?
答案 0 :(得分:2)
print_a_line
中调用的gets
方法从文件中读取一行(而不是整个内容)。 File
引用的current_file
对象会跟踪文件中的当前位置,因此每次调用gets
时,都会返回下一行。
没有任何内容正在考虑current_line
来确定要读取哪一行。