Ruby 对象模型

作者: 云莉6 | 来源:发表于2020-05-17 22:54 被阅读0次

对象模型

面试被问了几次 Ruby 的对象模型,也有被要求画出来对象模型图,查找资料后,手动画了几遍。关键词可以搜索祖先链(ancestors chain)

Ruby 对象模型图

代码演示:

class Dog; end

tidy = Dog.new

tidy.class => Dog
tidy.superclass => Module

Dog.class => Class
Dog.superclass => Object

Class.superclass => Module
Class.class => Class

Module.class => Class
Module.superclass => Object

Object.class => Class
Object.superclass => BasicObject

BasicObject.class => Class
BasicObject.superclass => nil

方法查找

Ruby 中的方法查找(method lookup)也需要掌握。关键点在于对祖先链(ancestors chain)的理解基础上,再了解 Ruby 中的向右向上查找(one step to the right, then up)原则:向右一步,进入方法接受者(receiver,也就是方法的调用者) 所属的类,然后再向上查找祖先链,直到找到目标方法。如果遍历完祖先链也没有找到方法的话,会调用method_missing方法,如果这个方法没有被定义,则抛出NoMethodError。

相关文章

  • Ruby 对象模型

    对象模型 面试被问了几次 Ruby 的对象模型,也有被要求画出来对象模型图,查找资料后,手动画了几遍。关键词可以搜...

  • Ruby 对象模型的复习

    最近复习了下 ruby 对象模型的知识,参照了 Ruby Metaprogramming,于是边看边做笔记,还是收...

  • ruby 对象模型总结

    对象是由一组实例变量和一个类的引用组成。 对象的方法存在于对象所属的类中(从类的角度看,它们叫做实例方法)。 类本...

  • Ruby对象模型浅析

    1.横向查找 今天主要简单讲讲Ruby对象模型,说简单它也是比较简单的--只要知道在Ruby里面一切都是对象。说难...

  • Ruby元编程笔记 - 对象模型

    Tips 类名不过是常量 对象包含了实例变量,它就好像一个Hash表一样。 方法存放在类之中。 类自身也是对象 所...

  • ruby元编程

    对象模型 所有class定义之外的代码默认运行在顶级对象main中。 打开类 ruby的class更像是一个作用于...

  • ruby 对象

    1. 注意:对象的实例变量只能被该对象的实例方法访问,实例方法外的代码不能对实例变量进行读写(除非反射机制) 错误...

  • Ruby的对象与类

    Ruby的对象与类 ruby是一门完全面向对象的语言,它当中的每一个值都是对象,那么Ruby对象的本质到底是什么呢...

  • 《Ruby基础教程》提取-第二部分

    第2部分 Ruby的基础: 什么是对象:在RUBY中, 靓丽数据的基本单位称为对象。数值对象字符串对象数组对象,散...

  • Ruby元编程笔记——1.对象模型

    打开类 在Ruby中,定义类的语句和其他语句没有本质区别,你可以在类定义中放置任何语句。 Ruby的class关键...

网友评论

    本文标题:Ruby 对象模型

    本文链接:https://www.haomeiwen.com/subject/euseohtx.html