此文档页面特定于 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 虚拟化的分支。