4

The documentation of scala macro is very hard to understand, so I think it must have some background knowledge if one wants to use it in real case.

And I ask help for what these knowledge are.

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

it is a code snippet of macro, and there are little info available for what Block means, and other similar terms. It is hard to go deep in if these key points lost.

So if anyone knows where exists a more detailed documentation or tutorial, please tell me, thanks:)

4

1 回答 1

2

如果失去这些关键点,就很难深入。

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

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

尽管如此,那里已经有很多有用的文档。例如,这个问题想知道如何理解 AST:我在哪里可以了解如何为 Scala 宏构建 AST?

另一方面,这个问题对如何使用提供了一些价值reify在Scala中使用reify(获取AST)表达式的最简单方法是什么?

在 docs.scala-lang.org 上有一个很好的概述,描述了宏可以做什么和不能做什么。官方主页也包含很多有用的信息。

在 StackOverflow 上阅读更多问题、查看 GitHub 上的源代码或在网络上搜索有关宏的博客文章应该不会那么困难。

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

于 2013-05-02T03:51:47.463 回答