在Ruby脚本中打印出一行文件

时间:2016-04-24 21:01:07

标签: ruby

我正在经历“以艰难的方式学习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并打印出文件的相关行?

1 个答案:

答案 0 :(得分:2)

print_a_line中调用的gets方法从文件中读取一行(而不是整个内容)。 File引用的current_file对象会跟踪文件中的当前位置,因此每次调用gets时,都会返回下一行。

没有任何内容正在考虑current_line来确定要读取哪一行。