然而, 在 shell 会话中可以很简单地探索和使用 AST, 我通常就是这样探索 AST 结构的....让我们看一个关于函数的调用例子:
iex(3)> quote do div(5,4) end
{:div, [context: Elixir, import: Kernel], [5, 4]}
这类似于...事实上, 所有二进制运算符都会像函数调用一样被 quoted....因此, 没有这些 guard 语句, 任何双参数的函数调用都会在我们的宏中结束, 这可能是我们不想要的. 使用这个 guard 语句能将输入限制在已知的二进制运算符中.
有趣的事情发生在第 9 行....因此, 我们可以简单地使用函数调用的方式 unquote(operator)(left, right).
这一点讲完了, 今天的这一章也该结束了. 它有点短, 但略微复杂些.