如何理解和使用scala宏,并编写更复杂的函数

scala宏的文档很难理解,所以我认为如果想要在实际情况下使用它,它必须具备一些背景知识.

我会帮助了解这些知识.

c.Expr[Unit](Block(treesWithSeparators.toList, Literal(Constant(()))))

它是宏的代码片段,并且可用于Block的含义和其他类似术语的信息很少.如果这些关键点丢失,很难深入.

所以如果有人知道哪里有更详细的文档或教程,请告诉我,谢谢:)

最佳答案

It is hard to go deep in if these key points lost.

是的,这是真的,但并不是每个人都可以进入宏.它们是一个强大的功能,不完全理解它们的用户不应该使用它们.

潜入宏需要大量的自学,没有简单的方法来学习它们如何工作以及如何使用它们.

尽管如此,已经有很多有用的文档.例如,这个问题想知道如何理解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上的源代码或在网上搜索宏上的博客帖子应该不会那么困难.

一开始,这应该足以找到进入宏观地狱的方法.

点赞