在Ruby中,术语“元类”,“本征类”和“单例类”是完全同义和可替
Class类的文档有一个令人难以置信的混乱图,涉及“元类”.我试图揭开这里实际发生的事情的神秘面纱.这三个词都是……
>元类 Ruby中的同义词?我知道元类在Python中意味着特定和不同的东西,例如,但在Ruby中呢? 解决方法
tl;博士:是的.
在过去,没有人知道该怎么称呼他们,所以每个人都称他们为别的东西.以下是不同作者随着时间推移使用或提出的名称的一小部分样本: >单身人士班 最初,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中,使用单例类.当 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方法称为返回单例类. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |