gpt4 book ai didi

ruby - 在 Ruby 中,术语 "metaclass"、 "eigenclass"和 "singleton class"是否完全同义且可替代?

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

Class 的文档类有一个令人难以置信的混淆图,涉及“元类”。我试图揭开这里实际发生的事情的神秘面纱。这三个词都是...

  • 元类
  • 特征类
  • 单例类

同义词 在 Ruby 中?例如,我知道元类在 Python 中意味着特定的和不同的东西,但在 Ruby 中呢?

最佳答案

tl;dr:是的。

过去,没有人知道如何调用它们,所以每个人都调用它们为其他名称。这只是不同作者随时间使用或提议的名称的一小部分:

  • 单例类
  • 特征类
  • 元类
  • 幽灵类
  • 自己的类(class)
  • 虚拟类
  • 影子类
  • 我的类(class)
  • 自学
  • 父类(super class)
  • 下层类(Class)
  • anchor 类
  • 嵌入类
  • 内部类
  • 天赋类
  • 无名类(class)
  • 单元类
  • 原子类
  • 单类
  • 奇点
  • 手鼓类
  • 内部类

最初,matz 不想选择一个名字,而是希望社区定下一个名字。不幸的是,它没有。当 matz 和 David Flanagan 写下 The Ruby Programming Language ,他们不得不选择,他们选择了特征类(但单例方法)。 Eigenclass 也用于 ISO Ruby 语言规范的初稿(但主要是 because it was very easy to run a search&replace on that name once an "official" one had been found )。

但是,在 later draftsfinal version of the ISO Ruby Language Specification , 单例类被使用。当 Object#singleton_class访问器方法终于在 Ruby 1.9.2 和 Module#singleton_class? 中正式引入在 Ruby 2.1 中引入。

元类_why the lucky stiff 使用的术语在 Why's (Poignant) Guide to Ruby (以及其他著作和库),它对整整一代非日语 Ruby 开发人员产生了巨大影响,并且在很长一段时间内都是 Ruby 元编程的最佳介绍(也是唯一的英文介绍)。

如今,单例类和特征类这两个术语似乎主要使用(由于核心库中的方法名称,单例类接管了),偶尔会提到元类。

就我个人而言,我一直不喜欢元类,因为它实际上已经有了不同的含义:元类是一个类的类。在 Ruby 中,类有 两个 类来定义它们的行为:它们的单例类和 Class 类,其中任何一个都可以被认为是它们的元类。 (尽管这些类都不能做其他语言中的元类可以做的事情,例如更改方法查找或继承的规则。)

虚拟类的问题更大,因为它不仅在一般编程中具有不同的含义(可以在子类中覆盖的嵌套类,例如 Beta 或 Newspeak,并为 Scala 提出但放弃),在 Ruby 社区中,它甚至已经有了第三个​​不同的含义:虚拟类是 MRI 和 YARV 源代码中给单例类和包含类的名称。

内部类也已经具有作为嵌套类(作为外部类成员的类,就像方法一样)的同义词的含义。

就个人而言,我一直喜欢特征类,与已经建立的技术术语对称,例如特征值、特征向量、特征空间、特征函数、特征面、特征波、特征平面、特征态、特征问题等。但是,我现在采用了单例类这个术语,简单地说因为将 singleton_class 方法称为返回单例类更容易。

关于ruby - 在 Ruby 中,术语 "metaclass"、 "eigenclass"和 "singleton class"是否完全同义且可替代?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25336033/

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