Ruby Language Un mixin simple avec include


Exemple

module SomeMixin
  def foo
    puts "foo!"
  end
end

class Bar
  include SomeMixin
  def baz
    puts "baz!"
  end
end

b = Bar.new
b.baz         # => "baz!"
b.foo         # => "foo!"
# works thanks to the mixin

Maintenant, Bar est un mélange de ses propres méthodes et des méthodes de SomeMixin .

Notez que la façon dont un mixin est utilisé dans une classe dépend de la manière dont il est ajouté:

  • le mot include clé include évalue le code du module dans le contexte de la classe (par exemple, les définitions de méthode seront des méthodes sur les instances de la classe),
  • extend évalue le code du module dans le contexte de la classe singleton de l'objet (les méthodes sont disponibles directement sur l'objet étendu).