首页 > 代码库 > (转)Ruby的include和extend
(转)Ruby的include和extend
include主要用来将一个模块插入(mix)到一个类或者其它模块。
extend 用来在一个对象(object,或者说是instance)中引入一个模块,这个类从而也具备了这个模块的方法。
通常引用模块有以下3种情况:
1.在类定义中引入模块,使模块中的方法成为类的实例方法
这种情况是最常见的
直接 include <module name>即可
2.在类定义中引入模块,使模块中的方法成为类的类方法
这种情况也是比较常见的
直接 extend <module name>即可
3.在类定义中引入模块,既希望引入实例方法,也希望引入类方法
这个时候需要使用 include,
但是在模块中对类方法的定义有不同,定义出现在 方法
def self.included(c) ... end 中
完整的示例如下:
1 module Ma 2 MA_VALUE = http://www.mamicode.com/1 "color: #008080;"> 3 def ma_1 4 puts "it is ma_1" 5 end 6 end 7 8 module Mb 9 MB_VALUE = http://www.mamicode.com/1 "color: #008080;">10 def self.included(c) 11 def c.mb_2 12 puts "it is mb_2" 13 end 14 end 15 def mb_1 16 puts "it is mb_1" 17 end 18 end 19 20 class Ca 21 include Ma 22 end 23 24 class Cb 25 extend Ma 26 include Mb 27 end 28 29 c1 = Ca.new 30 c1.ma_1 31 32 c2 = Cb.new 33 c2.mb_1 34 Cb.ma_1 35 Cb.mb_2 36 37 puts Ma::MA_VALUE 38 puts Ca::MA_VALUE 39 40 puts Mb::MB_VALUE 41 puts Cb::MB_VALUE
(转)Ruby的include和extend
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。