我觉得Object是每个人的祖先,包括Class。 所以我认为它应该是Class.class == Object。 我感到有点困惑和扭曲为什么在Ruby中使用Object.class ==类?
5
A
回答
10
类返回类(#type)而不是祖先。对象的类是Class。班级是班级。类是一个对象。广告真相:我从来没有学过Ruby,但Object-Class关系有是30年前提出的Smalltalk。
5
这是它在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
6
Object
的类是Class
(因为Object
本身是一个类),以及Object
是Class
的祖先。
有一个循环引用,它非常复杂。我个人的建议,如果你真的不需要玩,不要去那里。
9
类,对象,模块和所有其它类是实例一个类类:)
Class.class == Module.class == Object.class == Hash.class ==类
类也是一个对象(如在系统中的任何其他对象),但它不是对象的直接例如,它是一个的实例衍生类(类在这种情况下)
Class.superclass.superclass ==对象(模块在中间)
对象本身也是一类。 Object.class ==类
类,模块和对象具有循环依赖关系,因为它们在OO模型的核心中。
Object.class.superclass.superclass ==对象
=> parent (.superclass)
-> instance-of (.class)
alt text http://www.grabup.com/uploads/b10b2ffa9976953e3d6f88e6fcbf6f28.png?direct
相关问题
- 1. 在ruby中object.class ==和object.is_a有什么区别?
- 2. 在Java中,object.class是做什么的?
- 3. 为什么Object.class不能捕获所有?
- 4. 为什么Ruby类模型中使用@变量?
- 5. 为什么在Ruby中使用类变量被认为是“代码味道”?
- 6. 基于Object.class创建类
- 7. 为什么在ruby中使用class << self?
- 8. 为什么Ruby使用'=>'符号?
- 9. Ruby,为什么FeedNormalizer的使用会破坏分类器:: CRM114
- 10. 为什么人们有时在非Ruby类中使用实例变量?
- 11. 为什么Ruby的stdlib有DateTime类?
- 12. 为什么在Ruby Event Machine中使用线程?
- 13. 为什么在Ruby中使用注入时会出现'typeerror'?
- 14. 为什么Heroku Stack Traces指示Ruby 1.9.1正在使用中?
- 15. 为什么回调在Ruby on Rails中使用符号
- 16. 为什么在Ruby中不使用“gsub”删除管道?
- 17. 为什么在Ruby中-7 mod 3 = 2?
- 18. 在Ruby中为什么nil.id返回4?
- 19. set_if_nil.call在ruby中做什么?
- 20. 为什么我不能在Ruby中实例化Integer类?
- 21. 为什么使用ruby 1.9中的===可以调用procs?
- 22. Ruby中的这是什么,它为什么存在?
- 23. 什么时候使用Ruby和什么时候使用PHP
- 24. ruby中的类变量是什么
- 25. 是什么:upcase在Ruby中
- 26. 是什么|| =在Ruby中
- 27. 在Ruby中做什么==?
- 28. “|| =”在Ruby 1.9.2中做什么?
- 29. 的Java Object.class和x.getClass
- 30. Ruby:为什么不能在Ruby 5.0中安装Active Admin?
元类在Ruby中不同的工作:他们得到注入方法查找链,从而Ruby没有两个平行的层次结构类和元类,但是,正如你所说,基础是相同的。 – 2009-08-03 00:38:05
@Jorg:谢谢。只要我完成我目前的项目,我会拿起铁轨和红宝石,我听到太多的赞美,我很感兴趣:) – 2009-08-03 01:34:37