【发布时间】:2011-04-10 14:29:30
【问题描述】:
我目前正在学习 D,我想知道的一件事是 D 是否有办法复制 JVM 语言的代码生成功能。
这是一个场景: 我有一个对象,我想根据该对象生成一个字符串,该对象给出它的名称及其所有字段。在 Java/Scala 中,我可以只使用反射,但假设速度是个问题。我可以使用字节码生成库来动态生成和编译一个无需反射的类。该实现将分解为遍历对象的字段并通过递归获取其名称,并使用该信息动态生成直接访问字段的 Java(或字节码)。
如果您不喜欢这种情况,因为它很弱和/或不切实际,另一种可能更现实的情况是优化对象序列化。
我见过一些例子,其中 D 的编译时评估和/或模板元编程用于在编译时预先计算斐波那契序列和其他递归算法之类的事情,但是有没有办法只用语言和一个编译器,还是需要开发一个单独的代码生成器并在编译器之前运行它才能获得这种功能?
【问题讨论】:
标签: reflection compiler-construction code-generation d