为什么Ruby中的MyClass.class.superclass是Module

时间:2014-09-10 16:53:42

标签: ruby class

我在ruby中有一个名为MyClass的类。 当我在irb中检查它

>class MyClass
>end

> MyClass.class.superclass

我得到了

 => Module 

我需要知道此输出的技术说明

1 个答案:

答案 0 :(得分:3)

首先,让我们看一下这段代码:

MyClass.class #=> Class

时髦。所以一个类实际上是名为Class的类的实例。这两行的含义非常相似:

class MyClass; end
MyClass = Class.new

这些也是相似的。

class MyClass; end;
myInstance = MyClass.new

myInstance = Class.new.new # I know this looks funky, but it works

现在我们开始:

MyClass.class.superclass #=> Module

因此名为Class的类继承自Module。这是有道理的,因为Class表现得像Module,除了你可以实例化它,并且它不能被包含。


查看ClassModule的文档,了解更多信息以及这两个类的工作原理。

意识到红宝石一直都是乌龟,并且#34;很重要而一个类对象是类Class的一个实例,它是最好的例子之一,如果你可以了解它:)