最后, 由于宏在编译期间运行, 因此可以通过将计算转移到编译时来优化一些代码.
因此, 肯定会有适合宏的情况, 您不应该害怕使用它们....然后, 在 quoted 的代码中, 我们通过分别计算左边和右边重新解释 == 操作(第 4 行和第 5 行), 然后是整个结果(第 7 行)....我还引入(实际上, 是从 Elixir 源代码中复制粘贴了)guard 语句指定了宏能处理的运算符集(第 3 行). 这个检查有一个特殊原因....所以, 当我们想生成一个二进制操作代码时, 我们需要注入一个正确的 AST, 它(如前所述)与双参数的函数调用相同....因此, 我们可以简单地使用函数调用的方式 unquote(operator)(left, right).
这一点讲完了, 今天的这一章也该结束了. 它有点短, 但略微复杂些.