Elixir :: Aninhando funções com operador pipe ( |> )
Daniel Cunha
Posted on January 26, 2022
Algumas vezes nosso código pode ficar muito confuso, principalmente quando precisamos encadear várias funções. Imagine ler um código com funções aninhadas como o exemplo abaixo:
my_function(get_result_from(foo(new_function(other_function()))))
Aqui, nós estamos passando o valor other_function/0
para new_function/1
, e new_function/1
para foo/1
, foo/1
para get_result_from/1
, e finalmente o resultado de get_result_from/1
para my_functoin/1
.
Elixir possui um modo pragmático que melhora o entendimento do código quando temos chamadas como esta, com a utilização do operador pipe. O operador pipe |>
, recebe o resultado de uma expressão e passa ele adiante. Assim, poderiamos reescrever o código acima da seguinte maneira:
other_function() |> new_function() |> foo() |> get_result_from() |> my_function()
Se você possui alguma familiaridade com shell script, o pipe do Elixir é exatamente como do shell, ou seja o valor retornado da esqueda é passado para a função da direita.
Alguns exemplos de utilização do pipe
Posso fazer split de uma string simplesmente assim:
iex> "Daniel Soro" |> String.split()
["Daniel", "Soro"]
Posso transformar uma string em caixa alta e fazer split simplesmente assim:
iex> "Daniel Soro" |> String.upcase() |> String.split()
["DANIEL", "SORO"]
Com o pipe, podemos produzir código mais legívies e elegante, um operador muito legal em Elixir para deixar nosso código sinteticamente mais elegante e fácil de entender!
Posted on January 26, 2022
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.