Quelle est la différence entre les comprennent et s'étendent en Ruby?

Juste obtenir ma tête autour de Ruby métaprogrammation. Le mixin/modules arrivent toujours à me confondre.

  • inclure: mélanges en module spécifié méthodes méthodes d'instance dans la classe cible
  • étendre: mélanges en module spécifié méthodes les méthodes de la classe dans la classe cible

Est donc la différence majeure que ceci ou est un grand dragon tapi?
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!"
InformationsquelleAutor Gishu | 2008-10-01