1

Scala Macro Paradise适用于 2.11 和 2.10 。对于 2.10,它说

您已经可以在 2.10.x 的生产版本中使用准引号

这是否意味着2.10天堂是2.11版本的子集?例如,我可以使用 Scala 2.10 来试验类型宏,还是我需要使用 2.11 来实现这个功能?

4

3 回答 3

2

我的理解是,您只能访问准报价。您使用这个特殊的 2.10 版本的宏天堂编译您的宏,然后可以在针对(正常,非宏天堂)scala 2.10 编译的代码中使用它们。这是可能的,因为在编译宏本身时使用了准引用,并扩展为正常的宏代码,它不使用 Scala 2.10 中已经可用的 API(显式地创建树,逐个节点)。所以你可以在 Scala 2.10 代码中使用这些宏,编译器不会看到差异。

另一方面,类型宏不能使用这个技巧,因为它们在 scala 2.10 中根本不可用。在编译时生成类型不是 scala 2.10 编译器知道如何做的事情,因此您肯定需要使用 2.11 编译器编译您的客户端代码(您的实际代码,而不仅仅是宏代码)。

于 2013-05-25T09:37:12.200 回答
2

宏天堂最近被改造成一个编译器插件。它包括对准引号(与 2.11 兼容的源代码)和宏注释的大大改进的支持。类型宏和无类型宏已停止使用(支持宏注释。)

于 2013-08-07T12:36:36.157 回答
2

由于二进制兼容性限制,Paradise 2.10.x 仅包含准引号。顺便说一句,感谢您提出的出色问题。我在这里更新了指南。

于 2013-05-25T09:14:06.697 回答