运算符重载和Ruby风格的运算符重载
程序大概意思是,重新定义,文件类的比较方法。只要目录和文件名一样,就说这两个文件类一样。ruby的
class DocumentPointer
attr_reader :folder, :name
def initialize( folder, name )
@folder = folder
@name = name
end
def ==(other)
return true if other.equal?(self)
return false unless other.instance_of?(self.class)
folder == other.folder && name == other.name
end
end
class DocumentPointer
attr_reader :folder, :name
def initialize( folder, name )
@folder = folder
@name = name
end
def ==(other)
return false unless other.respond_to?(:folder)
return false unless other.respond_to?(:name)
folder == other.folder && name == other.name
end
end
当我们用的时候
#Asymmetry
class ContractIdentifier < DocumentIdentifier
end
doc_id = DocumentIdentifier.new( 'contracts', 'Book Deal' )
con_id = ContractIdentifier.new( 'contracts', 'Book Deal' )
puts "They are equal!" if doc_id == con_id
会出现子类没有父类方法的问题,在contractIdentifier里没有重载操作符。那么
class VersionedIdentifier < DocumentIdentifier
attr_reader :version
def initialize(folder, name, version)
super(folder, name)
Well-Behaved Equality 147
@version = version
end
def ==(other)
if other.instance_of? VersionedIdentifier
other.folder == folder &&
other.name == name &&
other.version == version
elsif other.instance_of? DocumentIdentifier
other.folder == folder && other.name == name
else
false
end
end
end
分享到:
相关推荐
Eloquent RUBY Kindle 版本
### Eloquent Ruby:深入探索Ruby语言的魅力 #### 引言 《Eloquent Ruby》是一本深受Ruby开发者喜爱的书籍,作者Russ Olsen通过本书为读者提供了一条清晰的学习路径,不仅适用于初学者,也适合那些已经有一定经验...
《Eloquent Ruby》是Ruby编程语言的一本经典书籍,作者是Russ Olsen。这本书深受Ruby程序员的欢迎,无论读者是新手还是经验丰富的Rails开发者,都被推荐阅读。从书中的描述可以看出,它被形容为“像在使用Ruby编程...
Eloquent Ruby 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊...
Eloquent Ruby 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除
### Eloquent Ruby:深入探索Ruby编程之美 #### 引言 《Eloquent Ruby》是一本深受Ruby社区赞誉的书籍,作者Russ Olsen通过本书为读者提供了一条通向Ruby编程精髓的路径。无论你是Ruby初学者还是经验丰富的Rails...
Eloquent JavaScript 3rd, Eloquent JavaScript 3rd Eloquent_JavaScript_3rd
以上只是《Eloquent JavaScript》笔记的部分要点,实际内容还包括函数式编程、测试、调试、Web应用开发等多个方面。通过深入学习这些知识点,可以全面提高JavaScript编程技能,并为开发复杂的Web应用程序打下坚实...
在这个"laravel开发-eloquent-search"项目中,我们将深入探讨如何在Laravel应用中利用Eloquent ORM实现搜索引擎优化,特别是结合了Elasticsearch这种高性能的全文搜索引擎。 首先,Eloquent ORM是Laravel的核心部分...
在Laravel框架中,Eloquent ORM(对象关系映射)是其核心组件之一,它提供了一个优雅的方式来处理数据库操作。Eloquent ORM使得开发者能够用PHP类和对象来代表数据库表和记录,使得代码更加易读且易于维护。然而,...
**Laravel 开发 - Eloquent ORM 与 CodeIgniter 的集成** 在现代 PHP 开发中,Laravel 和 CodeIgniter 都是广受欢迎的框架。Laravel 的 Eloquent ORM(对象关系映射)以其优雅、直观的语法和强大的功能赢得了开发者...
在Laravel框架中,Eloquent ORM(对象关系映射)是其强大且优雅的数据操作工具。Eloquent提供了简单、直观的方式来处理数据库中的数据,而"eloquent-sortable"则是一个扩展,它为Eloquent模型增加了排序功能,允许...
Eloquent Search Map是一个针对Eloquent的扩展,旨在简化和增强模型的搜索功能,使得在复杂的查询场景下能够更轻松地实现搜索逻辑。本文将深入探讨Eloquent Search Map的使用方法及其背后的原理。 首先,我们来理解...
在Laravel框架中,Eloquent ORM(对象关系映射)是用于处理数据库操作的强大工具,而Eloquent Cache则是Eloquent ORM的一个扩展,旨在提高数据库查询的性能和效率。本篇文章将深入探讨Eloquent Cache的工作原理、...
在Laravel框架中,Eloquent ORM(对象关系映射)是其核心特性之一,它提供了一个优雅的方式来处理数据库操作。Eloquent Scopes是Eloquent ORM中的一个强大工具,用于定义可重用的查询条件,使得代码更加整洁、可维护...
而“Laravel开发-eloquent-castable”似乎关注的是如何更进一步地扩展这个功能,实现更加灵活和定制化的数据转换。 首先,我们来了解Eloquent模型中的`casts`属性。`casts`属性是一个关联数组,键是数据库字段名,...
本项目聚焦于Laravel的开发,特别是Silex、Capsule和Eloquent这三个关键组件,它们各自在Web应用程序开发中扮演着重要的角色。 首先,Silex是PHP的一个轻量级Micro Framework,基于Symfony组件构建,它为开发者提供...
在Laravel框架中,Eloquent ORM(对象关系映射)是其核心特性之一,它提供了一种优雅的方式来处理数据库操作。Eloquent ORM采用ActiveRecord模式,使得与数据库交互变得简单直观。"Laravel开发-eloquent-custom"这个...
3. **《Eloquent Ruby》(《优雅的Ruby》)** - **简介**:本书以一种轻松愉快的方式介绍了Ruby语言的各种特性,作者David Black以其丰富的经验带领读者领略Ruby的魅力。 - **适合人群**:适合希望通过实践快速...