我正在努力理解Ruby元编程。混合模块总是让我感到困惑。
- 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!"