在 GitHub 上编辑此页面

已弃用:Scala 2 宏

先前实验性的宏系统已被删除。

取而代之的是一个更简洁、更受限制的系统,它基于两个互补的概念:inline'{ ... }/${ ... } 代码生成。'{ ... } 延迟代码的编译并生成包含代码的对象,而 ${ ... } 则评估生成代码的表达式并将其插入到周围的 ${ ... } 中。在这种情况下,标记为内联的定义包含 ${ ... },则为宏,${ ... } 内部的代码在编译时执行并生成 '{ ... } 形式的代码。此外,可以使用更复杂的反射 API 来检查和创建代码内容,作为 '{ ... }/${ ... } 框架的扩展。

  • inline 已在 Scala 3 中 实现
  • 引号 '{ ... } 和拼接 ${ ... } 已在 Scala 3 中 实现
  • TASTy 反射 提供更复杂的基于树的 API 来检查或创建引用的代码。