include Moudle
的话,只能用实例对象调用module中的method
extend Moudle
的话,只能用 类 或者 其它module 来调用module中的method
如果希望module method既可以被其他类 include 和 extend, 自己也可以通过 ModuleName.method调用,可以写成下面的样子
module Temp
def say
puts "Temp module"
end
extend self
end
module Amodule
extend Temp
end
class Bclass
extend Temp
end
class Cclass
include Temp
end
Temp.say
Amodule.say
Bclass.say
Cclass.new.say
上面的代码是可以运行的。但是下在这条语句是不能运行的
B.new.say
C.say
值得一提的是,如果在Temp模块中没有extend self
这一句,那么 Temp.say
是错误的。