【问题标题】:How to understand and use scala macro, and write a more complex function如何理解和使用scala宏,编写更复杂的函数
【发布时间】:2023-03-19 15:10:02
【问题描述】:

scala 宏的文档非常难看懂,所以我认为如果要在实际案例中使用它必须有一些背景知识。

我请求帮助以了解这些知识是什么。

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

它是宏的代码 sn-p,关于 Block 的含义和其他类似术语的信息很少。这些关键点丢了就很难深入。

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

【问题讨论】:

    标签: scala macros


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-27
    • 1970-01-01
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多