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
对象》中的例子。
分享到:
相关推荐
在创建User类时,我们使用`include: Comparable`来将Comparable模块引入,使得User类的实例具备了比较功能。这样,我们就可以对User对象进行比较操作,如`jack.lt(jill)`或`jill.gt(jack)`。 需要注意的是,模块中...
- Comparable模块:用于比较对象大小。 - Enumerable模块:提供迭代功能。 - Singleton模块:确保一个类只有一个实例。 - **Require, load和include**:如何加载其他文件或模块。 #### 九、异常 - **异常处理**...
PyPI是Python社区官方维护的一个仓库,用于发布和获取Python第三方模块,方便开发者分享和使用他们的代码。 描述中的"资源来自pypi官网,资源全名:Comparable-0.2.tar.gz"进一步确认了这个资源的确是从PyPI官方...
第2章创建第一个Java模块 来源: : 内容 设置JDK 切换JDK版本 设置Netbeans IDE Java 9模块 传统的Java代码结构 什么是模块 创建一个模块 创建您的第一个Java模块 ...public class Contact implements Comparable {
4. **Test类**:作为主程序类,用于调用数据输入输出模块和分牌模块,维护程序的完整性和连贯性。 5. **主程序流程**: - **数据输入模块**:负责接收用户输入的数据,封装成对象以便其他模块使用。 - **分牌模块...
低耦合表示不同模块之间的依赖程度较低,降低了修改一个模块对其他模块的影响。 - C. 低内聚高耦合:模块之间高度依赖且功能分散,系统难以扩展与维护。 - D. 高内聚高耦合:虽然模块内部紧密相关,但模块间依赖性...
`Employees.java`文件定义了一个`Employees`类,实现了`Comparable`接口,这表明员工对象可以进行比较。类中包含了如员工ID(EmpId)、部门ID(DepId)、姓名(EmpName)、性别(Sex)、国籍(Nationality)、出生...
全局变量是整个程序中都可以访问的变量,而局部变量只在模块内可访问。操作系统和编译器通过内存分配的位置来区分全局变量和局部变量。 9. 字符串替换 知识点:字符串处理,replaceAll()方法 可以使用replaceAll...
通过合理地设计和组织方法,可以使代码更模块化,易于理解和维护。 在Java中,方法的定义包括访问修饰符、返回类型、方法名、参数列表以及方法体。例如,一个简单的返回整数的方法可能如下所示: ```java public ...
Java的泛型和封装是J2SE中非常重要的概念,它们分别提升了代码的安全性和模块化程度。通过理解并熟练运用这些特性,开发者可以编写出更高效、更健壮的Java应用程序。在学习Java的过程中,深入理解这些基础概念将对...
`Comparable`模块允许类实现比较运算符,如`==`、`等,通过混入`Comparable`,实例之间可以进行比较。 总之,Ruby的数值类和相关方法为处理各种数学运算提供了强大的支持,无论是简单的算术操作还是复杂的复数和...
19. 创建TreeSet时若未传入比较器,元素需要实现Comparable接口以确保排序规则。 20. 在PowerPoint中,使用设计模板可以快速统一大量图片的展示风格。 这些知识点涵盖了计算机二级考试中的核心概念,备考者需要对...
§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编程语言中,接口...在实际开发中,合理地使用接口可以使代码结构更加清晰,降低模块间的耦合度,提高代码的可读性和可扩展性。因此,理解并熟练运用Java接口是成为一名合格的Java程序员不可或缺的技能。
词网 注意:此存储库不再维护。 有关具有类似API的用于词网的独立Python模块,请参见 。 安装 虽然不再维护该项目,但是您可以...>> > wordnet = WordNet ( wordnet_30_dir ) # Uses WordNet v3.0 to be comparable t
面向对象编程是现代软件开发中的核心...无论是简单的冒泡排序还是复杂的快速排序,面向对象的方法都能提供一种清晰、模块化的解决方案。在实际项目中,理解和掌握这些概念对于提升代码的可维护性和可扩展性至关重要。
Java程序设计中,继承和多态是面向对象编程的核心特性。继承允许子类从父类继承属性和行为,使得代码重用和扩展性得以增强。多态则进一步提高了程序的...通过这些概念,开发者可以构建出更加模块化、易于维护的代码。
- 面向对象包括继承、封装和多态,有助于模块化设计,简化复杂问题,提高代码复用性。 - 多态允许子类对象替换基类对象,增强了程序的灵活性和扩展性。 9. **数据结构选择**: - 对于快速查询,可以选择HashMap...
- **Process类**:实现`Comparable<Process>`接口,用于比较不同进程的响应比。 - **Client模块**:实现算法逻辑,包括读取输入数据、进程调度和输出结果等功能。 - **init()**:从文件中读取进程信息。 - **...