Class有超类Module,它有超类Object,它有超类BasicObject,它是Class的一个实例。而Class又是Module的子类。
我真的对此感到困惑。(以上是通过在上述每个对象上使用.class和.superclass方法收集的)
任何人都可以向我解释一下究竟发生了什么吗?
答案 0 :(得分: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