Ich beschäftige mich nur mit Ruby-Metaprogrammierung. Das Mixin / die Module schaffen es immer, mich zu verwirren.
- include : mischt bestimmte Modulmethoden als Instanzmethoden in der Zielklasse ein
- verlängern : mischt angegebene Modulmethoden als Klassenmethoden in der Zielklasse ein
Ist der Hauptunterschied genau das 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!"