เพิ่งได้รับหัวของฉันเกี่ยวกับการเขียนโปรแกรมทับทิม mixin / modules จัดการเพื่อสร้างความสับสนให้ฉันเสมอ
- รวม : ผสมในวิธีการโมดูลที่ระบุเป็นวิธีการอินสแตนซ์ในชั้นเรียนเป้าหมาย
- Extended : ผสมในวิธีการโมดูลที่ระบุว่าเป็นวิธีการเรียนในชั้นเรียนเป้าหมาย
ดังนั้นความแตกต่างที่สำคัญเพียงแค่นี้หรือเป็นมังกรที่ซุ่มซ่อนขนาดใหญ่กว่า? เช่น
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!"