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


Elixir Macro.unpipe用法及代码示例


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

用法:

unpipe(expr)
@spec unpipe(t()) :: [t()]

将管道表达式分解为列表。

管道的 AST(|> 的一系列应用程序)类似于二元运算符或函数应用程序序列的 AST:顶级表达式是 right-most :|>(这是最后一个被执行),它的左边和右边是它的参数:

quote do: 100 |> div(5) |> div(2)
#=> {:|>, _, [arg1, arg2]}

在上面的示例中,|> 管道是right-most 管道; arg1100 |> div(5) 的 AST,arg2div(2) 的 AST。

将 AST 作为函数应用程序列表用于这样的管道通常很有用。这个函数正是这样做的:

Macro.unpipe(quote do: 100 |> div(5) |> div(2))
#=> [{100, 0}, {{:div, [], [5]}, 0}, {{:div, [], [2]}, 0}]

我们得到一个直接遵循管道的列表:首先是 100 ,然后是 div(5)(更准确地说,它的 AST),然后是 div(2)0 作为元组的第二个元素是当前函数应用程序中管道中前一个元素的位置:{{:div, [], [5]}, 0} 表示前一个元素(100)将作为第 0 个(第一个)参数插入到 div/2 函数,以便该函数的 AST 将变为 {:div, [], [100, 5]} ( div(100, 5) )。

相关用法


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