由于宏也是函数, 而 Elixir 在调用函数时可以省略括号, 所以我们可以这样写:
Tracer.trace 1+2
这很可能是 Elixir 之所以不在函数调用时要求括号的最主要原因....然而, 对于许多常量(原子, 数字, 字符串), 引用(quoted)形式和输入值完全一样. 此外, 二元元组和列表会在被引用(quoted)时保持它们的结构....}, b: {:y, [], Elixir}]
在第一个例子中, 你可以看到输入的关键词列表完全没变....因为在宏代码中, 您可以很容易地从关键字列表中获取所需要的选项, 而不需要分析一些令人费解的AST....理想情况下, 当我们这样做时, 我们不需要关心输入 AST 的内容, 在我们的例子中, 我们只需要在生成的函数中注入函数体, 而不需要关心函数体中实际有什么.
测试这个宏很简单.