我正在阅读Ruby中的MetaProgamming,我想了解类,对象和模块是如何构建的,类似于Class的超类是Module,但Module的类是Class。它就像是交织在一起的。
2.0.0-p451 :059 > MyClass.class
=> Class
2.0.0-p451 :060 > Class.class
=> Class
2.0.0-p451 :061 > MyClass.superclass
=> Object
2.0.0-p451 :062 > Class.superclass
=> Module
2.0.0-p451 :063 > Object.class
=> Class
2.0.0-p451 :064 > Module.class
=> Class
答案 0 :(得分:1)
总结:
obj.class
返回obj
。Class
,对于任何类cls.class
,Class
都是cls
。Class
本身就是一个类对象。 Module
,Object
等也是如此。一流的课程是Ruby的一大特色(很多语言都没有)。答案 1 :(得分:0)
我会尝试用我有限的知识回答。
您定义的任何类都自动成为Class
的实例。
话说:
class MyClass
几乎相当于说:
MyClass = Class.new
两者之间的区别仅在于它们的范围
另一个是Jester下面所说的内容
class
定义是一个范围门,意味着它开始了一个新的范围。
至于superclass
- subclass
(或parent
- child
)关系,表示child
类(它是名为{的对象的实例{1}})从其Class
类(也是对象parent
的实例)继承方法。