Elixir-管道操作符

管道操作符|>把前面表达式的结果传递给后面的表达式作为第一个参数。

编程可以变得很混乱,比如函数调用有多层嵌套以至于很难阅读:

foo(bar(baz(new_function(other_function()))))

这个例子中,我们把 other_function/0的值传递给 new_function/1,把 new_function/1 的值传递给 baz/1,把 baz/1 的值传递给 bar/1,最后把bar/1的结果传递给foo/1。Elixir 给我们提供了管道操作符来解决这个语法上的混乱。管道操作符|> 获取一个表达式的结果,并把它往后传递。 我们把上面的代码用管道重写看看:

other_function() |> new_function() |> baz() |> bar() |> foo()

管道获取左边的值,并把它传递给右边。

示例

字符分组
iex> "Elixir rocks" |> String.split()
["Elixir", "rocks"]
把所有分组大写
iex> "Elixir rocks" |> String.upcase() |> String.split()
["ELIXIR", "ROCKS"]
检查尾部字符串
iex> "elixir" |> String.ends_with?("ixir")
true

你可能感兴趣的:(Elixir-管道操作符)