`
qzriso
  • 浏览: 242410 次
  • 性别: Icon_minigender_1
  • 来自: ph
社区版块
存档分类
最新评论

Comparable模块

 
阅读更多

Comparable mixin 由希望对它的对象进行排序的类使用。同时,这个类必须定义<=>操作符,用于定义这个类如何同接受的另一个对象如何比较,根据是否小于,等于 或大于这个其它对象来决定返回值-1、0、1。Comparable使用<=>来实现常规的比较操作符(<, <=, ==, >=, 与 >)和between?方法。

例如:

class SizeMatters

include Comparable

attr :str

def <=>(anOther)

str.size <=> anOther.str.size

end

def initialize(str)

@str = str

end

def inspect

@str

end

end

 

s1 = SizeMatters.new("Z")

s2 = SizeMatters.new("YY")

s3 = SizeMatters.new("XXX")

s4 = SizeMatters.new("WWWW")

s5 = SizeMatters.new("VVVVV")

 

s1 < s2 #-> true

s4.between?(s1, s3) #-> false

s4.between?(s3, s5) #-> true

[ s3, s2, s5, s4, s1 ].sort #-> [Z, YY, XXX, WWWW, VVVVV]

 

只有在你的类中包含 Comparable 模块,并实现 <=> 操作符,这个类就可获得 Comparable 模块内的其它六种操作。如果需要话,你的类可以实现 succ 方法,那么这个类的所有对象就都可支持 Rang 对象的 each 方法。可参考一下《 Rang 对象》中的例子。

分享到:
评论

相关推荐

    JS.Class 学习笔记

    在创建User类时,我们使用`include: Comparable`来将Comparable模块引入,使得User类的实例具备了比较功能。这样,我们就可以对User对象进行比较操作,如`jack.lt(jill)`或`jill.gt(jack)`。 需要注意的是,模块中...

    Ruby程序设计高级教程

    - Comparable模块:用于比较对象大小。 - Enumerable模块:提供迭代功能。 - Singleton模块:确保一个类只有一个实例。 - **Require, load和include**:如何加载其他文件或模块。 #### 九、异常 - **异常处理**...

    PyPI 官网下载 | Comparable-0.2.tar.gz

    PyPI是Python社区官方维护的一个仓库,用于发布和获取Python第三方模块,方便开发者分享和使用他们的代码。 描述中的"资源来自pypi官网,资源全名:Comparable-0.2.tar.gz"进一步确认了这个资源的确是从PyPI官方...

    module-java9:模块-java9-chapt2

    第2章创建第一个Java模块 来源: : 内容 设置JDK 切换JDK版本 设置Netbeans IDE Java 9模块 传统的Java代码结构 什么是模块 创建一个模块 创建您的第一个Java模块 ...public class Contact implements Comparable {

    扑克牌数据结构程序设计.pdf

    4. **Test类**:作为主程序类,用于调用数据输入输出模块和分牌模块,维护程序的完整性和连贯性。 5. **主程序流程**: - **数据输入模块**:负责接收用户输入的数据,封装成对象以便其他模块使用。 - **分牌模块...

    网易笔试题2010

    低耦合表示不同模块之间的依赖程度较低,降低了修改一个模块对其他模块的影响。 - C. 低内聚高耦合:模块之间高度依赖且功能分散,系统难以扩展与维护。 - D. 高内聚高耦合:虽然模块内部紧密相关,但模块间依赖性...

    中小型超市综合信息管理系统-毕业设计(源程序).doc

    `Employees.java`文件定义了一个`Employees`类,实现了`Comparable`接口,这表明员工对象可以进行比较。类中包含了如员工ID(EmpId)、部门ID(DepId)、姓名(EmpName)、性别(Sex)、国籍(Nationality)、出生...

    笔试Java1.doc

    全局变量是整个程序中都可以访问的变量,而局部变量只在模块内可访问。操作系统和编译器通过内存分配的位置来区分全局变量和局部变量。 9. 字符串替换 知识点:字符串处理,replaceAll()方法 可以使用replaceAll...

    泛型和方法

    通过合理地设计和组织方法,可以使代码更模块化,易于理解和维护。 在Java中,方法的定义包括访问修饰符、返回类型、方法名、参数列表以及方法体。例如,一个简单的返回整数的方法可能如下所示: ```java public ...

    java 小笔记--对于J2SE的重点一个具体总结

    Java的泛型和封装是J2SE中非常重要的概念,它们分别提升了代码的安全性和模块化程度。通过理解并熟练运用这些特性,开发者可以编写出更高效、更健壮的Java应用程序。在学习Java的过程中,深入理解这些基础概念将对...

    ruby基础教程(第四版)第12章 数值类1

    `Comparable`模块允许类实现比较运算符,如`==`、`等,通过混入`Comparable`,实例之间可以进行比较。 总之,Ruby的数值类和相关方法为处理各种数学运算提供了强大的支持,无论是简单的算术操作还是复杂的复数和...

    2021-2022计算机二级等级考试试题及答案No.133.docx

    19. 创建TreeSet时若未传入比较器,元素需要实现Comparable接口以确保排序规则。 20. 在PowerPoint中,使用设计模板可以快速统一大量图片的展示风格。 这些知识点涵盖了计算机二级考试中的核心概念,备考者需要对...

    ruby语法基础教程

    §11.1 使用Kernel模块处理I/O操作 80 §11.2文件处理 80 §11.3 StringIO 81 §11.4 Socket 82 第十二章 反射和对象空间 82 §12.1 ObjectSpace模块 82 §12.2 察看类和对象的状态 83 §12.3 动态方法调用 86 §...

    Java中interface接口的作用

    在Java编程语言中,接口...在实际开发中,合理地使用接口可以使代码结构更加清晰,降低模块间的耦合度,提高代码的可读性和可扩展性。因此,理解并熟练运用Java接口是成为一名合格的Java程序员不可或缺的技能。

    wordnet:独立WordNet API

    词网 注意:此存储库不再维护。 有关具有类似API的用于词网的独立Python模块,请参见 。 安装 虽然不再维护该项目,但是您可以...&gt;&gt; &gt; wordnet = WordNet ( wordnet_30_dir ) # Uses WordNet v3.0 to be comparable t

    面向对象 排序

    面向对象编程是现代软件开发中的核心...无论是简单的冒泡排序还是复杂的快速排序,面向对象的方法都能提供一种清晰、模块化的解决方案。在实际项目中,理解和掌握这些概念对于提升代码的可维护性和可扩展性至关重要。

    Java程序设计:8 继承和多态.part2.ppt

    Java程序设计中,继承和多态是面向对象编程的核心特性。继承允许子类从父类继承属性和行为,使得代码重用和扩展性得以增强。多态则进一步提高了程序的...通过这些概念,开发者可以构建出更加模块化、易于维护的代码。

    java面试.pdf

    - 面向对象包括继承、封装和多态,有助于模块化设计,简化复杂问题,提高代码复用性。 - 多态允许子类对象替换基类对象,增强了程序的灵活性和扩展性。 9. **数据结构选择**: - 对于快速查询,可以选择HashMap...

    进程调度模拟设计—先来先服务、最高响应比优先调度算法

    - **Process类**:实现`Comparable&lt;Process&gt;`接口,用于比较不同进程的响应比。 - **Client模块**:实现算法逻辑,包括读取输入数据、进程调度和输出结果等功能。 - **init()**:从文件中读取进程信息。 - **...

Global site tag (gtag.js) - Google Analytics