====== Ruby : Snippets d'apprentissage ====== Vous trouverez ici quelques snippets (petits morceaux de code) en Ruby facilitant l'apprentissage de certaines subtilités de Ruby : syntaxes particulières, résolution élégante de problèmes courants ===== Utiliser un bloc passé en paramètre ===== La classe MonTableau contient une méthode sum(param) qui permet soit l'utilisation d'un calcul interne à la méthode, soit le passage d'un bloc qui contient un autre calcul. Ce bloc est alors pris en compte par la méthode pour son calcul. class MonTableau attr_reader :array def initialize(array) @array = array end def sum(valeur_initiale = 0) # Si aucun bloc n'est passé, le calcul est une simple addition de tous les membres de array return array.inject(:+) + valeur_initiale unless block_given? # La méthode a reçu un bloc et utilise donc ce bloc pour réaliser le calcul sum = valeur_initiale array.each {|n| sum += yield(n) } sum end end ==== Explications ==== * //yield// est une sorte d'alias représentant le bloc passé de l'appel de la méthode