zoukankan      html  css  js  c++  java
  • 模块

    module.rb

    =begin
    1、模块(Module)是一种把方法、类和常量组合在一起的方式。
    
    2、模块(Module)为您提供了两大好处:
    *模块提供了一个命名空间和避免名字冲突。
    *模块实现了 mixin 装置。
    
    3、模块类似与类,但有以下不同:
    *模块不能实例化
    *模块没有子类
    *模块只能被另一个模块定义
    =end
    $LOAD_PATH << '.'        #在当前目录中搜索被引用的文件    
    require 'support'
    
    puts Module1::A        #使用模块名称+两个冒号来引用一个常量
    Module1.test    #类方法名称前面放置模块名称和一个点号来调用模块方法
    
    puts "....................."
    
    #在类中引用模块
    class Module
        include Week          #include后面直接跟模块名
        def test1
            puts "methods in class"
        end
    end
    
    puts Week::FIRST_DAY
    m = Module.new
    m.test1
    Week.weeks_in_month            #直接使用模块名+方法名
    Week.weeks_in_year
    
    puts "......................"
    
    #通过模块使用mixin,即消除多重继承
    module A
        def a1
            puts "a1"
        end
        def a2
            puts "a2"
        end
    end
    
    module B
        def b1
            puts "b1"
        end
        def b2
            puts "b2"
        end
    end
    class Sample
        include A
        include B
        def s
            puts "s"
        end
    end
    samp = Sample.new
    samp.s
    samp.a1
    samp.a2
    samp.b1
    samp.b2

    support.rb

    module Module1
        A = 22
        def Module1.test        #注意该方法的命名规则
            puts "this is Module1"
        end
    end
    
    
    module Week
        FIRST_DAY = "sunday"
        def Week.weeks_in_month        #当在模块中定义方法时,可以是模块名+方法名
            puts "4 weeks in a month"
        end
        def weeks_in_year            #当在模块中定义方法时,直接方法名貌似也可以
            puts "52 weeks in a year"
        end
    end
    
    =begin
    
    总结:
    当模块直接被另外一个文件使用时,模块内的方法必须命名为:模块名.方法名
    当模块被另外一个文件的类应用时,模块内的方法可以命名为:方法名
    
    =end
  • 相关阅读:
    Activity中recreate方法的应用
    Python Web框架Tornado的异步处理代码演示样例
    停止复制代理后AWT缓存组的行为
    dlmalloc 2.8.6 源代码具体解释(5)
    大型情感类电视连续剧--Android高德之旅(2)地图类型
    Markdown---语法小记
    用函数指针实现的高速排序算法
    Hadoop-2.6.0上的C的API訪问HDFS
    聊聊高并发(十八)理解AtomicXXX.lazySet方法
    UI_搭建MVC
  • 原文地址:https://www.cnblogs.com/stellar/p/5680999.html
Copyright © 2011-2022 走看看