宏天堂

语言
此文档页面特定于 Scala 2 中提供的功能,这些功能已在 Scala 3 中删除或由替代功能取代。除非另有说明,此页面中的所有代码示例均假定您使用的是 Scala 2。

Eugene Burmako

我一直想象天堂会是一种图书馆。 豪尔赫·路易斯·博尔赫斯,“礼物之诗”

宏天堂是多个版本的 Scala 编译器的插件。它旨在可靠地与 scalac 的生产版本配合使用,使最新的宏开发在最终进入未来版本的 Scala 之前就能使用。请参阅路线图以了解 受支持的功能和版本列表,并访问 天堂公告 以了解有关我们支持保证的更多信息。

~/210x $ scalac -Xplugin:paradise_*.jar -Xshow-phases
    phase name  id  description
    ----------  --  -----------
        parser   1  parse source into ASTs, perform simple desugaring
 macroparadise   2  let our powers combine
         namer   3  resolve names, attach symbols to trees in paradise
packageobjects   4  load package objects in paradise
         typer   5  the meat and potatoes: type the trees in paradise
                ...

宏天堂中的一些功能会对宏天堂插件产生编译时依赖,而另一些功能则不会,但这些功能在运行时都不需要宏天堂。请继续访问 功能列表 文档以获取更多信息。

请查阅 https://github.com/scalamacros/sbt-example-paradise 以获取端到端示例,但简而言之,使用宏天堂就像在构建中添加以下两行一样简单(假设您已经 设置 sbt 以使用宏)。

resolvers += Resolver.sonatypeRepo("releases")
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full)

要在 Maven 中使用宏天堂,请按照 Stack Overflow 上页面 “在 Maven 项目中启用宏天堂 Scala 编译器插件” 中提供的说明进行操作(还要确保添加对 Sonatype 快照存储库和 scala-reflect.jar 的依赖项)。

<compilerPlugins>
  <compilerPlugin>
    <groupId>org.scalamacros</groupId>
    <artifactId>paradise_<YOUR.SCALA.VERSION></artifactId>
    <version>2.1.0</version>
  </compilerPlugin>
</compilerPlugins>

宏天堂的源代码可在 https://github.com/scalamacros/paradise 获得。有支持最新 2.10.x 版本、最新 2.11.x 版本、2.10.x、2.11.x 和 2.12.x 的快照以及 Scala 虚拟化的分支。

此页面的贡献者