ruby 模块

 更新时间:2007年11月24日 14:15:49   作者:  
 Ruby的模块非常类似类,除了:



模块不可以有实体 

模块不可以有子类 

模块由module...end定义.


实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看下去吧.

模块有两种用法.其一是将相近的方法和实体放在一个相对集中的域里.Ruby标准包里的Math模块就扮演着这一角色:

ruby> Math.sqrt(2)
   1.41421
ruby> Math::PI
   3.14159  


::操作符告诉 Ruby 解释器在哪里找常数的值(可以想像,Math外的其它模块用PI表示其它的一些东西).如果我们想省掉 :: 直接调用一个模块的方法和常数,我们可以用 include:

ruby> include Math
   Object
ruby> sqrt(2)
   1.41421
ruby> PI
   3.14159  


模块的另一用法是糅和(mixin).某些OO语言,包括C++,允许多重继承(multiple inheritance),即从多个的父类里继承. 现实世界里一个多重继承的例子是闹钟:你可以想像闹钟属于钟类同是属于带蜂音器的事物类.

Ruby并未特意实现真正的多重继承,但糅和技术是一很好的替代.记得模块无法实体化或子类化;但如果我们在类定义里include一个方法,
它的方法便实际上已加入,或"糅合"进这个类.

糅合可以视为一种寻求一切我们希望得到的特定属性的方法.举个例子,如果一个类有个 each 方法,把标准库里的Enumerable模块糅合进来就自然地赋予我们 sort 和 find 两个方法.

模块的使用令到我们获得多重继承的基本功能却可通过简单的树结构表述类关系,同时也可观地简化了语言的实现(Java的设计者也做了一个类似的选择).  
 

相关文章

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

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

    这篇文章主要介绍了Ruby版本管理工具RVM的安装和使用教程,本文示例基于类Unix的系统环境,需要的朋友可以参考下
    2015-08-08
  • 详解Ruby中范围的概念

    详解Ruby中范围的概念

    这篇文章主要介绍了详解Ruby中范围的概念,需要的朋友可以参考下
    2015-05-05
  • Ruby中处理时间的一些基本操作

    Ruby中处理时间的一些基本操作

    这篇文章主要介绍了Ruby中处理时间的一些基本操作,主要是利用到了Ruby中强大的Time模块,需要的朋友可以参考下
    2015-05-05
  • Ruby常量查找路径问题深入研究

    Ruby常量查找路径问题深入研究

    这篇文章主要介绍了Ruby常量查找路径问题深入研究,本文给出了多个例子来探讨Ruby的常量查找路径,并给出了总结结论,需要的朋友可以参考下
    2015-03-03
  • Ruby初学笔记之Hello World

    Ruby初学笔记之Hello World

    这篇文章主要介绍了Ruby初学笔记之Hello World,本文是一篇Ruby自学笔记,本文分别用普通方法、函数、类输出Hello World,从一个一个的例子中了解Ruby编程,需要的朋友可以参考下
    2015-06-06
  • 对Ruby on Rails进行高效的单元测试的教程

    对Ruby on Rails进行高效的单元测试的教程

    这篇文章主要介绍了在Ruby on Rails中进行高效的单元测试的教程,使用到了Ruby的RSpec和Factory Girl框架,需要的朋友可以参考下
    2015-04-04
  • Ruby使用REXML库来解析xml格式数据的方法

    Ruby使用REXML库来解析xml格式数据的方法

    这篇文章主要介绍了Ruby使用REXML库来解析xml格式数据的方法,文章最后提及了REXML库的使用相关安全问题可以注意一下,需要的朋友可以参考下
    2016-04-04
  • 详细解读Ruby当中的条件判断语句

    详细解读Ruby当中的条件判断语句

    这篇文章主要介绍了详细解读Ruby当中的条件判断语句,if、else等逻辑判断语句是各门编程语言的基础,需要的朋友可以参考下
    2015-05-05
  • Ruby中Hash的11个问题解答

    Ruby中Hash的11个问题解答

    这篇文章主要介绍了Ruby中Hash的11个问题解答,本文讲解了如何创建Hash、Hash的键是哪些类型、 如何给Hash赋默认的值等内容,需要的朋友可以参考下
    2015-01-01
  • Ruby3多线程并行Ractor使用方法详解

    Ruby3多线程并行Ractor使用方法详解

    这篇文章主要介绍了Ruby3多线程并行Ractor使用方法详解,Ruby3之前使用Thread来创建新线,Ruby3通过Ractor支持真正的多线程并行,多个Ractor之间可并行独立运行程,需要的朋友可以参考下
    2022-04-04

最新评论