博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ruby module ---模块,组件
阅读量:5172 次
发布时间:2019-06-13

本文共 1034 字,大约阅读时间需要 3 分钟。

  • module 的主要目的是把不同的方法和常量分别放进不同的命名空间。
  • module 的命名方式跟类一样首字母大写,多个单词不用下划线。 如:CircleArea
  • module 语法
      module ModuleName
              ......
      end
  • module用范围解析操作符“::”来调用module中的方法和常量。 如:Math::PI, Math 是module名。
  • 导入模块的方法:
    1. require 'module' -----导入模块。
        如:require 'date', 导入Date模块,但是不是require 'Date'
        调用module中的方法和常量时用模块名和范围解析操作符,如Math::PI
    2. include 模块名, 如include Math
        调用模块中的方法和常量时不需要写模块名和范围解析操作符,直接调用。如:cos(), 而不需要写Math::cos()
  • 可以把module看成是一个不能实例化,不能继承的类,它可以和类一起模拟实现多重继承

    module MartialArts

      def swordsman
      puts "I'm a swordsman."
      end
    end

    class Ninja

      include MartialArts
      def initialize(clan)
        @clan = clan
      end
    end

    class Samurai

      include MartialArts
      def initialize(shogun)
        @shogun = shogun
      end
    end

  • include关键字让实例可以使用模型中的方法和常量,extend关键字则可以让类自身使用模型中的方法和常量

    module ThePresent

      def now
        puts "It's #{Time.new.hour > 12 ? Time.new.hour - 12 : Time.new.hour}:#{Time.new.min} #{Time.new.hour > 12 ? 'PM' : 'AM'} (GMT)."
      end
    end

    class TheHereAnd

      extend ThePresent
    end

    TheHereAnd.now

转载于:https://www.cnblogs.com/patientAndPersist/p/4381851.html

你可能感兴趣的文章
eclipse环境下基于已构建struts2项目整合spring+hibernate
查看>>
[Data]Link cut tree
查看>>
二维码的生成细节和原理
查看>>
[ExtJS5学习笔记]第22 Extjs5正在使用beforeLabelTpl添加所需的配置选项标注星号标记...
查看>>
使用zzip和minizip解压缩文件
查看>>
【吐槽】火车票一票难求啊
查看>>
update与fixedupdate差别
查看>>
从技术到管理的问题
查看>>
iPhone&iPad DFU及恢复模式刷机、降级教程
查看>>
算法笔记2-优先队列(堆)(上)
查看>>
01背包问题
查看>>
Java中getResourceAsStream的用法
查看>>
【很好的分享】zookeeper系列
查看>>
命名规范
查看>>
信息安全系统设计基础实验二:固件设计
查看>>
WPF中Mvvm实现类似List的ObservableCollection在WPF中
查看>>
数据库的基本操作
查看>>
内聚与耦合
查看>>
题解 P3835 【【模板】可持久化平衡树】
查看>>
《江城子·己卯正月二十日夜记梦》——苏轼
查看>>