当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Macro.prewalk用法及代码示例


Elixir语言中 Macro.prewalk 相关用法介绍如下。

用法:

prewalk(ast, fun)
@spec prewalk(t(), (t() -> t())) :: t()

对引用的表达式执行深度优先、前序遍历。

返回一个新的 ast,其中每个节点都是在 ast 的每个对应节点上调用 fun 的结果。

例子

iex> ast = quote do: 5 + 3 * 7
iex> new_ast = Macro.prewalk(ast, fn
...>   {:+, meta, children} -> {:*, meta, children}
...>   {:*, meta, children} -> {:+, meta, children}
...>   other -> other
...> end)
iex> Code.eval_quoted(ast)
{26, []}
iex> Code.eval_quoted(new_ast)
{50, []}

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Macro.prewalk(ast, fun)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。