Outils pour utilisateurs

Outils du site


ruby:learning_snippets

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
ruby/learning_snippets.txt · Dernière modification: 2016/10/17 13:56 (modification externe)