繁体   English   中英

在长生不老药中,“|>”是什么意思?

[英]What does “|>” mean in elixir?

我正在阅读github上的一些代码elixir代码,我看到|>经常使用。 它不会出现在文档站点的操作列表中。 这是什么意思?

expires_at:    std["expires_in"] |> expires_at,

这是管道操作员 来自链接的文档:

该运算符在左侧引入表达式作为右侧函数调用的第一个参数。

例子

iex> [1, [2], 3] |> List.flatten()

[1, 2, 3]

上面的例子与调用List.flatten([1, [2], 3])

它使您能够避免像这样的错误代码:

orders = Order.get_orders(current_user)
transactions = Transaction.make_transactions(orders)
payments = Payment.make_payments(transaction, true)

使用管道运算符的相同代码

current_user
|> Order.get_orders
|> Transaction.make_transactions
|> Payment.make_payments(true)

看看Payment.make_payments函数,有第二个bool参数,如果那是第一个参数,就像这样:

def make_payments(bool_parameter, transactions) do
   //function 
end

它不再有用了。

在开发elixir应用程序时请记住,重要参数应该放在首位,将来它将使您能够使用管道操作员。

在编写非elixir代码时,我讨厌这个问题:我该怎么命名这个变量? 我浪费了很多时间来回答。

除了Stefan的出色响应之外,您可能还需要阅读此博客文章中名为“管道运算符”的部分,以便更好地理解管道运营商打算在Elixir中解决的用例。 重要的是这个:

管道运算符使得可以在不使用中间变量的情况下组合各种操作。 。从上到下阅读代码很容易。 我们通过各种转换传递状态以获得所需的结果,每个转换返回一些状态的修改版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM