hor*_*guy 5 ruby metaobject mop
请原谅我的无知,但什么是Metaobject协议,Ruby有一个吗?如果没有,是否可以为Ruby实现一个?如果Ruby有一个,Metaobject协议可能具有哪些功能呢?
What is a Metaobject protocol?
The best description I've come across is from the Class::MOP documentation:
A meta object protocol is an API to an object system.
更具体地说,它抽象了对象系统的组件(类、对象、方法、对象属性等)。然后可以使用这些抽象来检查和操作它们所描述的对象系统。
可以说,任何对象系统都有两个 MOP;隐式 MOP 和显式 MOP。隐式 MOP 处理方法分派或继承等事情,这些事情作为对象系统工作方式的一部分自动发生。显式 MOP 通常处理对象系统的内省/反射特征。
所有对象系统都有隐式 MOP。没有一个,他们就无法工作。显式 MOP 不太常见,并且根据语言的不同,可以从限制性(Java 或 C# 中的反射)到广泛开放(CLOS 是一个完美的例子)。
鲁比有吗?
根据此线程重新打开内置类,重新定义内置函数? Perlmonks 的文章我认为答案是否定的(至少在 MOP 的最严格意义上)。
显然,这里有一些回旋余地,因此可能值得在 SO 的 Perl 方面发布一个问题,因为Class::MOP/ Moose作者确实在那里回答了问题。
| 归档时间: |
|
| 查看次数: |
924 次 |
| 最近记录: |