Gets.chomp inside function in ruby

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
+4
source share
2 answers

File f (, , , ), . , . f gets, , . , f , , "". chomp . f.gets .

chomp , f.gets File.

: : chomp . (, , .) Perl (AFAIK), , , .

+7

IO#gets, , -. Kernel#open, , IO, . #gets - , . #chomp , .

+2

All Articles