Sadece kafamı Ruby meta programlamasının etrafında gezdirmek. Mixin / modüller her zaman beni şaşırtmayı başarır.
- include : hedef sınıfta örnek yöntemler olarak belirtilen modül yöntemlerindeki karışımlar
- expand : hedef sınıfta sınıf yöntemleri olarak belirtilen modül yöntemlerini karıştırır
Büyük fark sadece bu mu yoksa daha büyük bir ejderha gizleniyor mu? Örneğin
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!"