我认为对象是每个人的祖先,包括Class.所以我认为它应该是Class.class == Object.我感到有点困惑和扭曲
Rem*_*anu 10
class返回类(#type)而不是祖先.对象的类是Class.班级是班级.类是一个对象.广告中的真相:我从未学过Ruby,但是Object-Class关系必须是30年前提出的Smalltalk.
类,对象,模块和所有其它类是实例一的类类:)
Class.class == Module.class == Object.class == Hash.class == Class
类也是一个Object(与系统中的任何其他对象一样)但它不是Object的直接实例,它是派生类的实例(在本例中为Class)
Class.superclass.superclass == Object(模块位于中间)
对象本身也是一个类.所以Object.class == Class
类,模块和对象具有循环依赖关系,因为它们位于OO模型的核心.
Object.class.superclass.superclass == Object
=> parent (.superclass)
-> instance-of (.class)
Run Code Online (Sandbox Code Playgroud)
替代文字http://www.grabup.com/uploads/b10b2ffa9976953e3d6f88e6fcbf6f28.png?direct
Object的阶级是Class(因为Object它本身就是一个阶级),并且Object是一个阶级的祖先Class.
有一个循环引用,它非常复杂.我个人的建议,如果你真的不需要玩它,不要去那里.
这是它在ruby 1.9中的工作方式:
Class.class = Class
Class.superclass = Module
Module.class = class
Module.superclass = Object
Object.class = Class
Object.superclass = BasicObject
BasicObject.class = Class
BasicObject.superclass = nil
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4074 次 |
| 最近记录: |