ruby 模块

编程入门 行业动态 更新时间:2024-10-12 08:23:50
ruby的模块非常类似类,除了: 模块不可以有实体 模块不可以有子类 模块由module...end定义. 实际上...模块的'模块类'是'类的类'这个类的父类.搞懂了吗?不懂?让我们继续看下去吧. 模块有两种用法.其一是将相近的方法和实体放在一个相对集中的域里.ruby标准包里的math模块就扮演着这一角色: ruby>math.sqrt(2) 1.41421 ruby>math::pi 3.14159 ::操作符告诉ruby解释器在哪里找常数的值(可以想像,math外的其它模块用pi表示其它的一些东西).如果我们想省掉::直接调用一个模块的方法和常数,我们可以用include: ruby>includemath object ruby>sqrt(2) 1.41421 ruby>pi 3.14159 模块的另一用法是糅和(mixin).某些oo语言,包括c++,允许多重继承(multipleinheritance),即从多个的父类里继承.现实世界里一个多重继承的例子是闹钟:你可以想像闹钟属于钟类同是属于带蜂音器的事物类. ruby并未特意实现真正的多重继承,但糅和技术是一很好的替代.记得模块无法实体化或子类化;但如果我们在类定义里include一个方法, 它的方法便实际上已加入,或"糅合"进这个类. 糅合可以视为一种寻求一切我们希望得到的特定属性的方法.举个例子,如果一个类有个each方法,把标准库里的enumerable模块糅合进来就自然地赋予我们sort和find两个方法. 模块的使用令到我们获得多重继承的基本功能却可通过简单的树结构表述类关系,同时也可观地简化了语言的实现(java的设计者也做了一个类似的选择).
  • 0
  • 0
  • 0
  • 0
  • 0

更多推荐

ruby 模块

本文发布于:2023-06-11 03:32:27,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/625754.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模块   ruby

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!