此文档页面特定于 Scala 2 中发布的功能,这些功能已在 Scala 3 中删除或被替代功能所取代。除非另有说明,此页面中的所有代码示例均假定您使用的是 Scala 2。
实验
Eugene Burmako
自作为 Scala 2.10 的实验性功能发布以来,宏已经将以前不可能或复杂到难以实现的事情带入了可能的领域。Scala 的商业和研究用户都使用宏来实现他们的想法。在 EPFL,我们利用宏来支持我们的研究。Lightbend 也在许多项目中使用宏。宏在社区中也很流行,并且已经催生了许多有趣的应用程序。
最近的演讲 “宏有什么用?” 描述并系统化了 Scala 2.10 用户中发现的宏的用途。演讲的论点是,宏适用于代码生成、静态检查和 DSL,并通过来自研究和工业界的许多示例进行了说明。
我们还在 Scala'13 研讨会上发表了一篇论文,“Scala 宏:让我们联合起来!”,从更学术的角度介绍了 Scala 2.10 中宏学的最新技术。在论文中,我们展示了 Scala 的丰富语法和静态类型如何与宏协同作用,并探讨了宏如何启用使用现有语言功能的新颖且独特的方法。