主页 > 知识库 > Ruby中关于模块的一些基础知识

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

热门标签:硅谷的囚徒呼叫中心 语音系统 百度AI接口 呼叫中心市场需求 客户服务 Win7旗舰版 电话运营中心 企业做大做强

模块与类很相似,它也可以说成是“不能被实例化的类”。由于Class类是Module类的子类,所以说成是“类=模块+实例化能力”也许更好。

所谓模块,究竟是用来干什么的呢?其作用主要有两大类:Mix-in和命名空间。

Mix-in实际上是受限制的多重继承。利用实际做成的继承关系,可以实现对某些类进行一些“点缀”的目的。事实上,Mix-in这种说法就来自于在冰激凌上面的饼干或者坚果。

在面向对象设计的历史中,由多重继承机制造成的问题早已众所周知了。所以,很多现代的面向对象设计语言都只支持单一继承的方式。Ruby就是采用的这种方式。

但是,多重继承机制也有不能被割舍的魅力。因此Ruby通过采用Mix-in的方式引入了很多多重继承的优点。

一个类如果同时继承了多个类,就会很容易在面向对象设计上出现很多问题。因此,Ruby加入了以下限制:

1、 只能继承一个类

2、 可以继承多个所谓的“像类但不是类”的模块

此外,Ruby把“在类中加入模块”的动作称为include。

模块的另一个功能是提供命名空间

在大规模的程序开发中,命名冲突的问题经常会出现。比如读者在程序中需要制作一个名为Service的类,但是Service这个名字却已经在程序库中被使用了,这就是命名冲突的问题。

在很多现代的编程语言中,为了避免命名冲突的问题,基本上都提供了命名空间或者包的功能。在不同的命名空间中存在的Service类虽然类名相同,但是会被作为不同的对象来处理。

在Ruby中,通常会利用模块来提供这样的命名空间。
 

class Service; end
module Library
  class Service; end
end

 最开始的Service类属于Top Level的命名空间,后面的Service类则属于Library模块。

这其实就是Top Level和Library模块中分别定义了名为Service的常量(类名实际上是指向class对象的常量)。

因此,在使用时就像使用常量一样。
 

::Service       #Top Level的Service
Library::Service  #Library的Service

您可能感兴趣的文章:
  • Ruby中的block代码块学习教程
  • 详解Ruby中的代码块对象Proc
  • Ruby中编写类与模块的风格指南
  • 介绍Ruby中的模块与混合类型的相关知识
  • 详解Ruby中的块的知识
  • Ruby中使用SWIG编写ruby扩展模块实例
  • 使用Ruby re模块创建复杂的正则表达式
  • ruby 模块
  • 深入理解Ruby中的代码块block特性

标签:喀什 安康 山西 山西 长沙 海南 崇左 济南

巨人网络通讯声明:本文标题《Ruby中关于模块的一些基础知识》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266