只是让我了解 Ruby 元编程。mixin/modules 总是让我感到困惑。
- include : 混合指定的模块方法作为目标类中的实例方法
- extend : 混合指定的模块方法作为目标类中的类方法
那么主要的区别仅仅是这个还是潜伏着更大的龙? 例如
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!"