`

Eloquent Ruby 读书笔记 续

阅读更多
运算符重载和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 Kindle 版本

    eloquent ruby

    ### Eloquent Ruby:深入探索Ruby语言的魅力 #### 引言 《Eloquent Ruby》是一本深受Ruby开发者喜爱的书籍,作者Russ Olsen通过本书为读者提供了一条清晰的学习路径,不仅适用于初学者,也适合那些已经有一定经验...

    Eloquent Ruby

    《Eloquent Ruby》是Ruby编程语言的一本经典书籍,作者是Russ Olsen。这本书深受Ruby程序员的欢迎,无论读者是新手还是经验丰富的Rails开发者,都被推荐阅读。从书中的描述可以看出,它被形容为“像在使用Ruby编程...

    Eloquent Ruby 无水印原版pdf

    Eloquent Ruby 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细信息请在美国亚马逊...

    Eloquent Ruby epub

    Eloquent Ruby 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Eloquent_ruby

    ### Eloquent Ruby:深入探索Ruby编程之美 #### 引言 《Eloquent Ruby》是一本深受Ruby社区赞誉的书籍,作者Russ Olsen通过本书为读者提供了一条通向Ruby编程精髓的路径。无论你是Ruby初学者还是经验丰富的Rails...

    Eloquent_JavaScript 3rd

    Eloquent JavaScript 3rd, Eloquent JavaScript 3rd Eloquent_JavaScript_3rd

    Eloquent-[removed]来自 Eloquent JavaScript 的笔记

    以上只是《Eloquent JavaScript》笔记的部分要点,实际内容还包括函数式编程、测试、调试、Web应用开发等多个方面。通过深入学习这些知识点,可以全面提高JavaScript编程技能,并为开发复杂的Web应用程序打下坚实...

    Laravel开发-eloquent-search

    在这个"laravel开发-eloquent-search"项目中,我们将深入探讨如何在Laravel应用中利用Eloquent ORM实现搜索引擎优化,特别是结合了Elasticsearch这种高性能的全文搜索引擎。 首先,Eloquent ORM是Laravel的核心部分...

    Laravel开发-eloquent-uuid

    在Laravel框架中,Eloquent ORM(对象关系映射)是其核心组件之一,它提供了一个优雅的方式来处理数据库操作。Eloquent ORM使得开发者能够用PHP类和对象来代表数据库表和记录,使得代码更加易读且易于维护。然而,...

    Laravel开发-eloquent-codeigniter

    **Laravel 开发 - Eloquent ORM 与 CodeIgniter 的集成** 在现代 PHP 开发中,Laravel 和 CodeIgniter 都是广受欢迎的框架。Laravel 的 Eloquent ORM(对象关系映射)以其优雅、直观的语法和强大的功能赢得了开发者...

    Laravel开发-eloquent-sortable

    在Laravel框架中,Eloquent ORM(对象关系映射)是其强大且优雅的数据操作工具。Eloquent提供了简单、直观的方式来处理数据库中的数据,而"eloquent-sortable"则是一个扩展,它为Eloquent模型增加了排序功能,允许...

    Laravel开发-eloquent-search-map

    Eloquent Search Map是一个针对Eloquent的扩展,旨在简化和增强模型的搜索功能,使得在复杂的查询场景下能够更轻松地实现搜索逻辑。本文将深入探讨Eloquent Search Map的使用方法及其背后的原理。 首先,我们来理解...

    Laravel开发-eloquent-cache

    在Laravel框架中,Eloquent ORM(对象关系映射)是用于处理数据库操作的强大工具,而Eloquent Cache则是Eloquent ORM的一个扩展,旨在提高数据库查询的性能和效率。本篇文章将深入探讨Eloquent Cache的工作原理、...

    Laravel开发-eloquent-scopes

    在Laravel框架中,Eloquent ORM(对象关系映射)是其核心特性之一,它提供了一个优雅的方式来处理数据库操作。Eloquent Scopes是Eloquent ORM中的一个强大工具,用于定义可重用的查询条件,使得代码更加整洁、可维护...

    Laravel开发-eloquent-castable

    而“Laravel开发-eloquent-castable”似乎关注的是如何更进一步地扩展这个功能,实现更加灵活和定制化的数据转换。 首先,我们来了解Eloquent模型中的`casts`属性。`casts`属性是一个关联数组,键是数据库字段名,...

    Laravel开发-silex-capsule-eloquent

    本项目聚焦于Laravel的开发,特别是Silex、Capsule和Eloquent这三个关键组件,它们各自在Web应用程序开发中扮演着重要的角色。 首先,Silex是PHP的一个轻量级Micro Framework,基于Symfony组件构建,它为开发者提供...

    Laravel开发-eloquent-custom

    在Laravel框架中,Eloquent ORM(对象关系映射)是其核心特性之一,它提供了一种优雅的方式来处理数据库操作。Eloquent ORM采用ActiveRecord模式,使得与数据库交互变得简单直观。"Laravel开发-eloquent-custom"这个...

    ruby资源推荐.docx

    3. **《Eloquent Ruby》(《优雅的Ruby》)** - **简介**:本书以一种轻松愉快的方式介绍了Ruby语言的各种特性,作者David Black以其丰富的经验带领读者领略Ruby的魅力。 - **适合人群**:适合希望通过实践快速...

Global site tag (gtag.js) - Google Analytics