深入理解 Ruby 中的对象相等性
1. 引言
在编程中,对象相等性是一个看似简单却又复杂的问题。就像字典里一些小词可能有很长的释义一样,对象相等性在实际编程中也有着比表面更复杂的内涵。理解对象相等性是创建行为良好的 Ruby 对象的关键之一,接下来我们将深入探讨 Ruby 中各种不同的相等性定义。
2. 文档标识符类的诞生
假设在处理文档时,由于文档数量过多,管理变得困难。为了解决这个问题,我们需要一个文档标识符对象,用于从众多文档中挑选出特定的文档。于是, DocumentIdentifier 类应运而生:
class DocumentIdentifier
attr_reader :folder, :name
def initialize( folder, name )
@folder = folder
@name = name
end
end
这个类的思路很简单:管理系统为每个文档分配一个(可能唯一的)名称,并将文档分组到文件夹中。要定位任何给定的文档,需要文档名称和其所在的文件夹,而 DocumentIdentifier 实例正好携带了这些信息。然而,同事反馈目前没有简单的方法来比较两个 DocumentIdentifier 实例是否指向同一个文档,希望我们对该类进行增强。
3. Ruby 中的多种相等性方法
Ruby 的 Object 类定义了至少四种相等性方法:
超级会员免费看
订阅专栏 解锁全文
2

被折叠的 条评论
为什么被折叠?



