Je me concentre sur la métaprogrammation Ruby. Les mixin / modules parviennent toujours à me confondre.
- include : mélange dans les méthodes de module spécifiées en tant que méthodes d' instance dans la classe cible
- extend : mélange dans les méthodes de module spécifiées en tant que méthodes de classe dans la classe cible
Alors, la différence principale est-elle juste ou est-ce qu'un plus gros dragon se cache? par exemple
module ReusableModule
def module_method
puts "Module Method: Hi there!"
end
end
class ClassThatIncludes
include ReusableModule
end
class ClassThatExtends
extend ReusableModule
end
puts "Include"
ClassThatIncludes.new.module_method # "Module Method: Hi there!"
puts "Extend"
ClassThatExtends.module_method # "Module Method: Hi there!"