Topic: Help with blocks and iterators

I'm learning RoR, I found a manual and some examples are not well explained, the problem is with the following example:

def f(count, &block)
value = 1
1.upto(count) do | i |
value = value * i
block.call(i, value)
end
end

f(5) do | i, f_i | puts "f(#{i}) = #{f_i}" end
--------------------------------------
f(1) = 1
f(2) = 2
f(3) = 6
f(4) = 24
f(5) = 120
--------------------------------------
--------------------------------------
--------------------------------------
class Repeater
def initialize(&block)
@block = block
@count = 0
end

def repeat
@count += 1
@block.call(@count)
end
end

repeater = Repeater.new do | count | puts "You called me #{count} times" end
3.times do repeater.repeat end
--------------------------------------…
You called me 1 times
2 You called me 2 times
3 You called me 3 times

======================================…
My questions are:
- Not for serving the "@ block" class "Repeater"
- The method "call" (block.call) What to do?

Thanks and greetings