Ruby module ---模块,组件

  • 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

时间: 2024-10-18 03:12:32

Ruby module ---模块,组件的相关文章

无废话网页重构系列——(7)布局(区块、栅格)、模块组件(module)

本文作者:大象本文地址:http://www.cnblogs.com/daxiang/p/4654800.html 在构建HTML主干结构后,开始编写“页面布局”和“模块组件”: 页面框架由几个主干结构支撑和区分,框架下则是布局,布局是由多个区块组成,区块里面则是栅格列,格子列里是各模块组件,各模块可有边框.内外边距. 用于布局的层,尽量不要设置边框.内外边距. 一.布局 如图: 主要HTML和CSS代码如下: <div class="section"> <div c

Titanium Module 模块开发(二)蓝牙控制 Module

今天 ,正好项目需要添加蓝牙的控制功能,我去Titianium 文档搜了一下,发现 只有Tizen 系统有,其他的都没有,只能自己做Module. 借这个机会,记录一下蓝牙控制Module 的开发过程中遇到的问题和一些知识点. 编写Module 建立项目 首先 ,建立一个Module 项目,不会的话参考:Titanium-Modules 模块开发 (一) :模块开发基础 创建完成后会是这样: 添加蓝牙相关方法 打开BluetoothadapterModule.java 文件 可看到如下代码: 2

ES6 module模块

模块Module  模块Module:一个模块,就是一个对其他模块暴露自己的属性或者方法的文件. 在这里,我们会把module-A.js和module-B.js分别当作两个模块(moduleA模块和moduleB模块)来对待和处理.用这两个模块来演示如何暴露一个模块的属性或方法. 导出Export 导出Export:作为一个模块,它可以选择性地给其他模块暴露(提供)自己的属性和方法,供其他模块使用. 导入Import 导入Import:作为一个模块,可以根据需要,引入其他模块的提供的属性或者方法

VLC各个Module模块之间共享变量的实现方法

在做VLC开发的时候,想使用一个模块访问另外一个模块的数据, 比如在网络模块得到了一些数据,想在其他模块得到这些数据进行处理,这时候就需要两个模块共享一些变量. 查看VLC的源码,发现VLC专门有variables.h和variables.c是用来处理变量的.它提供了一些方法可以创建VLC变量.设置VLC变量.改变.销毁VLC变量等. 当我们要产生一个VLC变量的时候,我们使用var_Create()函数: 如在UDP模块创建了一个变量, vlc_value_t valTemp; var_Cre

如何用ABP框架快速完成项目(11) - ABP只要加人即可马上加快项目进展- 全栈篇(2) - 不推荐模块组件化, 推荐微服务

一个人写代码不需要担心会和别人的代码冲突, 不需要做代码合并, 不需要担心自己的代码被覆盖. 但是多个人一起写代码就需要担心这些问题. 解决这些问题的方法很多, 比如用AzureDevOps(TFS)来进行代码管理和版本控制等等. 其中有两个办法就是, 业务模块组件化和微服务. 首先ABP是支持业务模块组件化的, 然而我并不推荐在ABP使用业务模块组件化, 因为: ABP更新太快了, 每2周更新一个版本. 除了ABP更新快, 其他技术\框架\工具也更新很快. 正如我在<如何用ABP框架快速完成项

基于ABP模块组件与依赖注入组件的项目插件开发

注意,阅读本文,需要先阅读以下两篇文章,并且对依赖注入有一定的基础. 模块系统:http://www.cnblogs.com/mienreal/p/4537522.html 依赖注入:http://www.cnblogs.com/mienreal/p/4550500.html 正文: 我最近在设计一个项目,而这个项目的一些业务功能,需要以插件的方式提供给这个项目,从而降低耦合性,主项目不会对具体业务功能产生依赖. 在以前,最简单粗暴的方式,就是扫描主程序目录下的所有dll或指定目录下的dll,然

angular架构预览(模块,组件.数据绑定等)

概念来自Angular官网 Angular 是一个用 HTML 和 JavaScript 或者一个可以编译成 JavaScript 的语言(例如 Dart 或者 TypeScript ),来构建客户端应用的框架. 写Angualr应用的步骤 a.用 Angular 扩展语法编写 HTML 模板              template b. 用组件类管理这些模板                                    component c.用服务添加应用逻辑          

AngularJS -- Module (模块)

什么是AngularJS的模块 我们所说的模块,是你的AngularJS应用程序的一个组成部分,它可以是一个Controller,也可以是一个Service服务,也可以是一个过滤器(Filter),也可以是一个directive(指令)等等…都是属于一个模块! 大多数的应用程序都是有一个自己的函数入口方法Main ,用它来进行初始化,以及加载装配各个模块,然后这些模块的组合,构成了你的应用程序,对吧? 但是,but, AngularJS应用程序却不是这样的哦,它没有main 方法,没有函数入口.

简单实例讲解linux的module模块编译步骤(转)

注:原博文讲述较为详尽细致,故转到本地--aaronGao ------------------------------------------------------------------------------------------------------------------------------------------- 本文将直接了当的带你进入linux的模块编译.当然在介绍的过程当中,我也会添加一些必要的注释,以便初学者能够看懂.之所以要写这篇文章,主要是因为从书本上学的话,