Ich mache mich gerade mit der Ruby-Metaprogrammierung vertraut. Die Mixin/Module schaffen es immer, mich zu verwirren.
- einschließen. : mischt sich in angegebene Modulmethoden als Beispielmethoden in der Zielklasse
- erweitern. : mischt sich in angegebene Modulmethoden als Klassenmethoden in der Zielklasse
Liegt der Hauptunterschied also nur darin oder lauert ein größerer Drache? z.B..
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!"