Ruby中的Module

作者: 就叫初九吧 | 来源:发表于2016-01-29 21:15 被阅读319次

    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

    相关文章

      网友评论

        本文标题:Ruby中的Module

        本文链接:https://www.haomeiwen.com/subject/jcijkttx.html