Mi sto solo concentrando sulla metaprogrammazione di Ruby. I mixin / moduli riescono sempre a confondermi.
- include : mescola i metodi del modulo specificati come metodi di istanza nella classe target
- extension : mescola i metodi del modulo specificati come metodi di classe nella classe target
Quindi la differenza principale è solo questo o si nasconde un drago più grande? per esempio
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!"