include主要用来将一个模块插入(mix-in)到一个类或者其它模块。即可以引入类方法也可以引入实型方法。
在模块中定义类方法有别于在类中定义,应大 def self.included(cla) .......end方法中定义。
model M
#定义类方法
def self.included(cla)
def cla.m_1
puts "it is a class method"
end
end
def m_2
puts "it is a instance method"
end
end
#引入类方法和实例方法
class C
include M
end
C.m_1 # "it is a class method"
C.new.m_2 #"it is a instance method"
-----------------------------------------------------------------------------------------------------------------------------------------
extend 如果在类定义中引入模块,这样模块中方法就是类方法;如果在对象上引用就是某个实例的方法
model MA
def ma
puts 'it is ma'
end
end
class CM
extend MA
end
class CA
end
CM.ma #'it is ma'
ca = CA.new
ca.extend(MA)
ca.ma #'it is ma'
----------------------------------------------------------------------------------------
require与load 都是引入一个文件,require直接引入文件名不加后缀, load加后缀。两都之间最大不同就是require只引入一遍,load是执行一次就引入一次。