Rendimento e blocos de Ruby

Blocos de aprendizagem e a declaração de rendimento podem ser um pouco confusos para iniciantes, o código abaixo mostra como o método times recebe um bloco e usa a declaração de rendimento para interpretar o que está dentro desse bloco. Estou compartilhando isso porque realmente me ajudou a entender como Ruby funciona.

Neste exemplo, definiremos uma versão francesa do método times chamada “fois” (fois significa times em francês) dentro da classe Integer:

class Integer
def fois
for i in 0...self
# self is referring to the current object, when we call
# this method on 6 for example (6.fois) then self
# will take the value 6
yield i
# the yield statement passes i as a parameter to the block,
# which in turn uses it to perform some actions
end
self
# this is equivalent to "return self", the method should
# return the current object at the end
end
end

Agora você pode usar o novo método que definimos acima como costuma usar o método times:

5.fois { |x| puts x }
2.fois { puts "Ruby is awesome" }

O que fizemos acima também é conhecido como “Monkey Patching”, é quando você abre uma classe Ruby e define seus novos métodos dentro dela. Espero que isso tenha ajudado você a entender os bloqueios e render um pouco mais!