Ruby中的Module

Ruby中没有Java语言中的interface,Ruby只支持单继承。Ruby通过Mix-in提供对类的扩展,其灵活性要比Java中的接口强大很多。
  Ruby中通过Module实现Minx-in。
  Module,带来的两个好处:
   1. 提供命名空间,组织类名冲突。
   2.实现了min-in能力
  Module的几点说明:
   1.Module是方法和类常量的集合
   2.Module中的方法包括实例方法和Module方法
   3.Module不能实例化
   4.Module中的实例方法要么作为类实例方法(include),要么作为类的类方法(extend)
   5.Module方法可以直接被module使用

例子
module M
    def m1
        puts 'instance methods'
    end
    #第一种方式定义module方法
    def M.m2
    puts 'module method'    
    end
    #第二种方式定义module方法
    def self.m3
        puts 'module method m3' 
    end
  #第三种方式定义module方法
    class << self
    def m4
          puts 'module method m4'   
      end
    end
end
M.m2    #=>'module method'
M::m2   #=>'module method'
M.m3    #=> 'module method m3'  
M::m3   #=>'module method m3'
M.m4    #=>'module method m4'
M::m4   #=>'module method m4'
#module中的实例方法作为类的实例方法
class C1
    include M
end
C1.new.m1  #=> 'instance methods'
#module中的实例方法作为类的类方法
class C2
    extend M
end
C2.m1   #=> 'instance methods'

参考链接
http://ruby-doc.org/core-2.3.0/Module.html
http://www.tutorialspoint.com/ruby/ruby_modules.htm

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • class和module很相似,类只不过是增加强了module,它比module多了三个方法:new()、allo...
    limx阅读 1,539评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • #ifdef __IPHONE_8_0 - (BOOL)application:(UIApplication *)...
    执着的小蛋挞阅读 726评论 0 0
  • 方正把车停在N县博物馆的大院门口后下车直奔售票处,此时售票处里的一个40多岁的女人正专心致志地打着毛衣,女人抬起头...
    长白居士阅读 143评论 0 0
  • 那个时候,我不懂什么是爱,看到漂亮的女孩总觉得会喜欢她,却只努力去关心了一个女孩两年,她说她要学习,我等着毕业的那...
    Yakult小胖阅读 229评论 0 0