1
在Metaprogramming Ruby书中,我可以跨越超类和类的概念。 这里是参考图像:Ruby类中的超类是'Object',但'Class'是'Module
据我所知:类具有限定超一个实例方法,它可以由下式定义(此处MyClass的)
任何新的类被称为我的问题是:
父母类有超类为模块但对象MyClass的超类为对象。为什么超类的Myclass是对象但不是模块?如果是通过设计,为什么这样设计?
在Metaprogramming Ruby书中,我可以跨越超类和类的概念。 这里是参考图像:Ruby类中的超类是'Object',但'Class'是'Module
据我所知:类具有限定超一个实例方法,它可以由下式定义(此处MyClass的)
任何新的类被称为我的问题是:
父母类有超类为模块但对象MyClass的超类为对象。为什么超类的Myclass是对象但不是模块?如果是通过设计,为什么这样设计?
如果您在Ruby中定义一个新类Foo
,那么的确,这是Class
类的一个实例,并Foo.class.superclass
是Module
预期。但既然你问不是的Foo.class
祖先,而是直接有关的Foo
祖先,后来才知道,
class Foo
end
是一样的书写
class Foo < Object
end
换句话说,新定义的类将默认成为Object
类的子类,除非另有说明。当然,您可以手动定义
class Bar < Module
end
为了创建Module
类的显式子类。 Module
类的后裔具有特定的特性,并且在Ruby中特别有用。请注意,类Class
不能被分类。