scala宏的文档很难理解,所以我认为如果想在实际情况下使用它,它必须具备一些背景知识。
我向这些知识提供帮助。
c.Expr[Unit](Block(treesWithSeparators.toList, Literal(Constant(()))))
它是宏的代码片段,并且可用于Block的含义和其他类似术语的信息很少。如果这些关键点丢失,很难深入。
所以,如果有人知道哪里有更详细的文档或教程,请告诉我,谢谢:)
答案 0 :(得分:2)
如果这些关键点丢失,很难深入。
是的,这是真的,但并不是每个人都可以进入宏。它们是一个强大的功能,完全不了解它们的用户不应该使用它们。
潜入宏需要大量的自学,没有简单的方法来学习它们的工作方式以及如何使用它们。
尽管如此,已经有很多有用的文档。例如,这个问题想知道如何理解AST:Where can I learn about constructing AST's for Scala macros?
另一方面,这个问题对如何使用reify
提供了一些价值:What's the easiest way to use reify (get an AST of) an expression in Scala?
在docs.scala-lang.org上有一个很好的overview可用,它描述了宏可以做什么和不做什么。 official homepage还包含大量有用的信息。
在StackOverflow上阅读更多问题,查看GitHub上的源代码或在网上搜索宏上的博客文章不应该那么困难。
一开始,这应该足以找到进入宏观地狱的方法。