gpt4 book ai didi

ruby - 我们如何谈论不从 Ruby 中的 `Class` 类继承的类?

转载 作者:数据小太阳 更新时间:2023-10-29 07:31:25 24 4
gpt4 key购买 nike

BasicObject ,据我所知,是 Ruby 中所有其他类的父类。但是,直到在层次结构的更下方才真正定义了 Class 类。因此,我很难理解 BasicObject 怎么会是一个类。

这里的区别仅仅是抽象的、面向对象意义上的 ruby​​ Class 与实际上是 Class 实例的类之间的区别吗?或者层次结构实际上是以 BasicObject 实际上是 Class 的实例的方式设置的?我很确定情况并非如此。

如果 Ruby 中“类”这个词有两种含义,我觉得我缺乏讨论这两种类型的语言。如果确实如此,那么我可以将不是 Class 实例的类称为什么?

最佳答案

您可以将所有类视为Class 的实例在 Ruby 世界中。值得记住的是,ruby 中的一切都是对象,包括类。是BasicObject是 Ruby 中所有类的顶级父类。 BasicObject的类(class)正在Class , 与 BasicObject 的父类不同是Class .

为了演示,假设我们有一个类 Person定义。

  • Person.new.classPerson
  • Person.classClass
  • Person.superclassObject
  • Object.classClass
  • Object.superclassBasicObject
  • BasicObject.classClass
  • BasicObject.superclassnil

证明Ruby中所有的类其实都是对象,你可以得到一个类的对象id。 BasicObject.object_id .在一般的面向对象上下文中,类的类没有意义,除非类也是对象。

关于ruby - 我们如何谈论不从 Ruby 中的 `Class` 类继承的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56777007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com