`
wangdeshui
  • 浏览: 256938 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一步一步学Ruby(十三):Ruby模块

阅读更多

Class类是Module的子类,类是一种特殊形式的模块,这个可看我的这篇文章 一步一步学Ruby(五): Class, Module, Object,Kernel的关系

我们知道最顶级的类是Object,那么最顶级的模块就是Kernel

我们使用模块的的主要目的是用来组织代码,模块化代码,有点类似命名空间,但却有很大的不同

一、创建和使用模块

用module关键字来定义模块

image

module没有实例,我们使用时把module混合到类中来使用,我们也可以这么理解,把Module里的内容拷贝一份放到类里,成为类的一部分

image

我们可以把模块放到一个单独的文件里,然后使用时进行加载,看下面的示例,假设我们有一个project.rb的文件,包含了Project模块

image

我们将Project混合到Manager类里

image

注意: 在使用require或load时,请求加载的内容放到引号里,而inclue不是用引号,这是因为require或load使用字符串做为参数,而include使用常量形式的模块名,require和load使用字符串变量也可以.

二、混合进模块的类的方法查找

image

上面say方法查找路径为 D类-->D类里包含的模块-->C类-->C类包含的模块......>Object-->Kernel,当找到第一个时,搜索停止。

同名方法的查找,后面覆盖前面的

image

用super提升查找路径(调用查找路径上下一个匹配的方法),同样我们使用super可以调用父类的同名方法,initialize是自动执行

image

  • super 调用时,自动传递当前的参数
  • super(),不传任何参数
  • super(a,b,c) 传递指定的参数

三、模块和类可以相互嵌套

module也可以包含类,但调用时需要这样使用 模块名::类名.new

image

 

本文作者: 王德水

未经同意,禁止转载

分享到:
评论

相关推荐

    .一步一步学RUBY

    据**TIOBE**指数显示,截至某个时间点,Ruby在全球开发语言排行榜上位列第11位,且预计在短时间内将跻身前十。Ruby的开源性质和强大的社区支持,使其成为软件开发领域的热门选择之一。 #### 二、Ruby的基础知识与...

    ruby - ruby tutorial

    安装过程中需要注意选择合适的编译器支持,以便能够顺利编译 Ruby 扩展模块。 安装完成后,可以通过命令提示符或 PowerShell 来验证 Ruby 是否成功安装: ```bash ruby -v ``` 如果安装成功,将显示当前安装的 ...

    Ruby-PryByebug实现在Pry中一步一步调试和堆栈导航

    在Ruby编程语言中,调试是理解代码运行过程和查找错误的关键步骤。`Pry` 和 `Byebug` 是两个非常强大的工具,它们结合起来可以提供一个高效、直观的交互式调试环境。`Pry` 是一个替代 IRB(Interactive Ruby)的 ...

    Refactoring Ruby

    - **利用元编程**:利用 Ruby 的元编程能力,如模块混合(mixins)、动态方法定义等特性进行重构。 - **利用动态类型**:通过动态地修改类和对象来优化代码结构。 - **利用代码块和迭代器**:利用 Ruby 强大的迭代器...

    linux版 ruby-2.3.0

    5. **gem管理**:Ruby的包管理器是gem,它允许开发者安装、更新和管理各种第三方库。使用`gem update --system`可以升级gem到最新版本,`gem install <库名>`则可以安装特定的库。 Ruby-2.3.0引入了一些重要特性,...

    Ruby的25个编程细节(技巧、实用代码段)

    ### Ruby的25个编程细节(技巧、实用代码段) #### 1. 使用 `try` 方法处理潜在的异常 在Ruby中,`try` 方法是一个非常有用的功能,它允许我们安全地访问对象的方法或属性,即使该对象为 `nil` 也不会抛出异常。...

    Ruby语言入门教程v1.0

    从早期的机器语言到汇编语言,再到高级语言如C、C++、Java,以及动态语言如Python、Ruby,每一步都标志着计算机科学的进步。了解这一历史脉络有助于学习者更好地把握Ruby语言在当前编程生态中的位置及其独特价值。 ...

    Ruby语言入门教程

    #### 十、模块与命名空间 模块是Ruby中用于组织代码的重要工具,它可以包含方法、常量和类等。 - **模块**:模块可以看作是类的一种特殊形式,主要用于封装一组相关的功能。 - **命名空间**:通过模块可以定义命名...

    适合Ruby 1.9.1的Ruby-FCGI源码包

    3. 运行`ruby extconf.rb`来生成Makefile,这一步会根据当前的Ruby环境配置编译选项。 4. 接着运行`make`来编译C扩展。 5. 最后,运行`sudo make install`将编译好的扩展安装到Ruby的扩展目录。 在使用Ruby-FCGI时...

    ruby-jogging:ruby 的每日提交

    4. **闭包和上下文**:理解块、Proc和Lambda如何捕获并保留其定义时的上下文,是掌握Ruby高级特性的重要一步。 5. **元编程**:Ruby允许在运行时修改自身,这被称为元编程。例如,你可以动态添加方法、修改类的行为...

    ruby-2.5.0.tar.gz

    Ruby-2.5.0是Ruby编程语言的一个版本,它在2018年发布,带来了许多性能优化和新特性。这个`.tar.gz`文件是一个压缩包,它包含Ruby 2.5.0的所有源代码文件,适用于在CentOS 6.5上安装Redmine时使用。Redmine是一款...

    ruby-2.25.tar.gz

    3. **配置**:运行`./configure`脚本来配置Ruby的编译环境,这一步会检测系统环境并生成适合的Makefile。 4. **编译**:执行`make`命令,编译源代码生成可执行文件。 5. **测试**:为了确保一切正常,可以运行`...

    ruby-chess:用Ruby创建的国际象棋游戏

    在Ruby-chess中,AI可能会使用Minimax算法配合Alpha-Beta剪枝,来预测对手的可能走法,评估每一步棋的得分,从而做出最佳决策。 用户交互方面,Ruby-chess可能通过命令行界面(CLI)进行,用户输入棋步,程序解析并...

    Ruby下WebDriver的相关操作指南

    WebDriver 通过 HTTP 协议与浏览器驱动进行通信,默认情况下 Ruby 的 Net::HTTP 模块设置了一个 60 秒的超时时间。如果页面加载时间超过 60 秒,将会导致超时错误。可以通过以下方式手动调整超时时间: ```ruby ...

    Ruby中关于模块的一些基础知识

    在Ruby编程语言中,模块...理解并熟练运用模块是成为Ruby开发者的关键一步,尤其是在构建大型、复杂的应用程序时,模块的重要性更加突出。通过合理地组织和使用模块,可以使代码结构更加清晰,更易于维护和扩展。

    ruby+watir安装包,安装步骤

    1.默认路径安装ruby186-26.exe 2.本地安装watir-1.4.1.gem,执行gem install watir-1.4.1.gem -l 3.本地安装rubygems-update-1.3.4.gem,执行 gem install rubygems-update-1.3.4.gem 4.更新rubygems,执行update_...

    Ruby on rails blog (博客程序)

    Ruby on Rails 是一款基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,使得开发者可以高效地构建功能丰富的Web应用程序。在这个“Ruby on Rails博客程序”中,我们将深入探讨如何在...

    ruby 知识总结

    Ruby是一种动态类型、面向对象的脚本语言,其语法简洁优雅,特别适合快速开发和原型设计。在这篇知识总结中,我们将深入探讨Ruby中的线程同步和闭包(包括Blocks、Procs、Lambdas和Methods)。 首先,让我们关注...

    Ruby版本管理工具RVM的安装和使用教程

    2. **安装Nginx模块**:使用Passenger提供的命令安装Nginx模块,这一步可能需要root权限。 ```bash rvmsudo passenger-install-nginx-module ``` 安装过程中可以选择自动下载并编译Nginx,也可以指定本地Nginx...

    基于Ruby的分布式服务系统的设计.pdf

    Ruby中的所有基本类型、代码块、函数、类和模块都是对象,而且类是开放的,支持动态添加、更新、删除成员。Ruby的singleton特性使得对象能够拥有独特的功能,便于控制服务类型;Ruby还支持mix_in模块,使得系统设计...

Global site tag (gtag.js) - Google Analytics