0

Class 有超类 Module,它有超类 Object,它有超类 BasicObject,它是 Class 的一个实例。而 Class 又是 Module 的子类。

我对此感到非常困惑。(以上内容是通过对上述每个对象使用 .class 和 .superclass 方法收集的)

谁能向我解释这里到底发生了什么?

4

1 回答 1

0

短语“实例”是您需要在这里进行的心理体操的一小部分但很重要。

那,以及类型的对象Class,以及一个名为 的类Object

如果你能理解这些,至少在慢慢地对自己重复的时候,那么你就明白了:

  • Object.new创建类Object的实例

  • Object是对Object类的引用,它本身就是Class 类的对象

  • Class是类Class的引用,它也是类Class的对象(!)

  • Class.new创建类Class的实例。

    • 这是你写作时幕后发生的事情的一部分class Foo
    • 实际上Foo = Class.new( String )class Foo < String; end
  • Class, Module,的类层次结构Object是 Ruby 中的一个实现细节。几乎所有的类都继承自Object,所以这样做也不足为奇Class

剩下的只是重复使用和体验。

值得注意的是这里发生的其他事情:您键入的代码中的标签是符号/变量名称,它们是指向具有类型并包含数据的基础对象的指针。不需要直接使用这些标签,它们与任何其他 Ruby 变量几乎相同:

o_klass = Object
o_instance = o_klass.new
o_instance.class
 => Object
于 2013-07-30T18:53:42.020 回答