Ruby : utiliser la notion d'infini dans votre code
Par Bounga le lundi, 25 décembre 2006, 11:39 - Trucs et astuces - Lien permanent
Il peut arriver dans certains cas que vous ayez besoin d'utiliser la notion d'infini dans votre code.
En Ruby c'est possible ! Il suffit de connaître l'astuce.
Supposons que vous avez une méthode next_row qui vous renvoie la ligne suivante d'un tableau calculée à la volée et que vous voulez pouvoir récupérer chaque ligne de ce tableau grâce à each. Il va vous falloir ré-écrire each pour qu'elle itére à l'infini sur votre tableau dynamique.
Voici comment faire :
def each
0.upto(1.0/0.0) { yield next_row }
end
Un rapide test dans IRB nous montre qu'effectivement l'expression 1.0/0.0 est évaluée comme l'infini :
MacBook:~ nico$ irb >> 1.0/0.0 => Infinity
Notre version de each va donc itérer à l'infini ! Magique 
Commentaires
Plus simple, plus court :
def each
loop { yield new_row }
end
Oui
mais on ne présente plus la notion d'infini ...