當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。