就我个人而言, 我觉得宏的主题非常有趣, 在本系列文章中, 我将试图解释它们是如何工作的, 提供一些关于如何编写宏的基本技巧和建议....但是, 在 AST 被求值前(通常由编译器完成), quoted expression 并没有进行语义上的验证....其意思是, 生成了一个描述该表达式 a+b 的 term, 不管表达式中的变量是否存在. 最终的代码并没有生成, 所以这里不会有错误抛出....unquote(some_expression)
...
end
对此两种情况, 求值的表达式必须在当前上下文中是有效的, 并注入该结果到你构建的表达式中....这就是宏工作的原理. 尽管我们只是在 shell 中尝试, 但使用 mix 或elixirc 构建项目时也是一样的.
我想这些内容对于第一篇来说已经够了.