在Ruby中,术语“元类”,“本征类”和“单例类”是完全同义和可替代的吗?

在Ruby中,术语“元类”,“本征类”和“单例类”是完全同义和可替代的吗?,第1张

概述Class类的文档有一个令人难以置信的混乱图,涉及“元类”.我试图揭开这里实际发生的事情的神秘面纱.这三个词都是…… >元类 >本征类 >单身人士班 Ruby中的同义词?我知道元类在Python中意味着特定和不同的东西,例如,但在Ruby中呢? tl;博士:是的. 在过去,没有人知道该怎么称呼他们,所以每个人都称他们为别的东西.以下是不同作者随着时间推移使用或提出的名称的一小部分样本: >单身人士 Class类的文档有一个令人难以置信的混乱图,涉及“元类”.我试图揭开这里实际发生的事情的神秘面纱.这三个词都是……

>元类
>本征类
>单身人士班

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

解决方法 tl;博士:是的.

在过去,没有人知道该怎么称呼他们,所以每个人都称他们为别的东西.以下是不同作者随着时间推移使用或提出的名称的一小部分样本:

>单身人士班
>本征类
>元类
>幽灵班
>自己的班级
>虚拟课
>影子课
> myclass
>自我阶级
> overclass
>下层阶级
>锚类
>嵌入式课程
>内在阶级
>天生的课
>无名的课
>单元课
>原子类
>奇异的课程
>奇点
>邦戈班
>内心阶级

最初,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 drafts和final version of the ISO Ruby Language Specification中,使用单例类.当Object#singleton_class访问器方法最终在Ruby 1.9.2中正式引入时,也选择了该名称,并在Ruby 2.1中引入了Module#singleton_class?.

Metaclass是_why the lucky stiff在Why’s (Poignant) Guide to Ruby(以及其他着作和库)中使用的术语,它对整整一代非日语Ruby开发人员具有很高的影响力,并且很长一段时间内对Ruby元编程的最佳介绍(以及唯一的英语)一).

如今,单例类和本征类似乎主要使用(由于核心库中的方法名称,单例类接管),偶尔提到元类.

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

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

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

就个人而言,我总是喜欢本征类,在对称性上已经建立了技术术语,如特征值,特征向量,本征空间,特征函数,特征面,特征波,本征平面,本征态,本征问题等.但是,我现在采用了单例类这个术语,因为它更容易将singleton_class方法称为返回单例类.

总结

以上是内存溢出为你收集整理的在Ruby中,术语“元类”,“本征类”和“单例类”是完全同义和可替代的吗?全部内容,希望文章能够帮你解决在Ruby中,术语“元类”,“本征类”和“单例类”是完全同义和可替代的吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存