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

时间:2013-05-02 03:33:10

标签: scala macros

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

我向这些知识提供帮助。

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

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

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

1 个答案:

答案 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上的源代码或在网上搜索宏上的博客文章不应该那么困难。

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