I am experiencing the “Learn Ruby the Hard Way,” and in exercise 20 there is a piece of code that I don’t understand. I do not understand why get.chomp is called in f in the function "print_a_line".
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 print the whole file:\n"
print_all(current_file)
puts "Now let rewind, kind of like a tape."
rewind(current_file)
puts "Let 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)
Therefore, I do not understand how the second part of the output is created. I understand that these are the first 3 lines of the test.txt file that are passed to the code, but I do not understand how f.gets.chomp does it.
$ ruby ex20.rb test.txt
First let print the whole file:
This is line 1
This is line 2
This is line 3
Now let rewind, kind of like a tape.
Let print three lines:
1, This is line 1
2, This is line 2
3, This is line 3
source
share