Je travaille actuellement sur les concepts de Ruby. Venant d'une formation VB, il y a certains concepts que je ne saisis pas encore tout à fait. Le rendement en fait partie. Je comprends comment cela fonctionne d'un point de vue pratique, mais je ne vois pas l'importance de Yield, ni quand et comment je pourrais l'utiliser à son plein potentiel.
Réponses
Trop de publicités?Le rendement fait partie d'un système plus large de fermetures dans Ruby. C'est une partie très puissante du langage et vous la trouverez dans chaque script Ruby que vous rencontrerez.
http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/
Il est bon de comprendre comment fonctionne le rendement, mais je l'utilise rarement et j'ai pensé qu'il en était de même pour d'autres. Les commentaires de cette réponse pourraient indiquer le contraire.
L'instruction yield de Ruby transfère le contrôle à un bloc donné à la méthode. Une fois le bloc terminé, le contrôle est rendu à la méthode et celle-ci continue d'exécuter l'instruction qui suit directement l'instruction yield.
Voici une variante de la séquence de Fibonacci trop souvent utilisée
def fib(upto)
curr, succ = 1, 1
while curr <= upto
puts "before"
yield curr
puts "after"
curr, succ = succ, curr+succ
end
end
Vous appelez ensuite la méthode avec quelque chose comme
fib(8) {|res| puts res}
et le résultat sera
before
1
after
before
1
after
before
2
after
before
3
after
before
5
after
before
8
after