【发布时间】:2011-02-18 22:33:24
【问题描述】:
最近我开始注意到我的一些代码中有重复。当然,一旦你注意到重复,它就会变得刺耳。这就是我问这个问题的原因。
这个想法是这样的:有时你编写同一个类的不同版本:原始版本、锁定版本、只读外观版本等。这些对类来说是常见的事情,但翻译是高度机械的。用锁获取/释放等包围所有方法。在动态语言中,您可以编写一个对类的实例执行此操作的函数(例如,迭代所有函数,用获取/释放的版本替换它们锁。)。
我认为我的意思是一个很好的术语是“反思类”。您创建一个转换,它接受一个类,并返回一个以期望方式修改的类。同步是最简单的情况,但还有其他情况:使类不可变[包装方法以便它们克隆,变异克隆,并将其包含在结果中],使类只读[假设您可以识别变异方法],创建类似乎适用于 A 型而不是 B 型等。
重要的是,理论上,这些转换在编译时是有意义的。尽管 ActorModel
我只是想知道这是否已经用一种语言实现了,它叫什么。
【问题讨论】: