Use canos (pipes) semper que possível em Elixir!
6758 단어 programacaoelixir
최근 상품vídeo sobre Pipes em Elixir . Como sei que nem todos gostam de ver vídeos(eu estou entre estas pessoas), vou escrever um pouco sobre o que falei lá.
Em primeiro lugar, preciso falar da Falácia do Espantalho. Um site muito bom sobre falácias lógicas é https://yourlogicalfallacyis.com/ . Lá você encontra um texto sobre a falácia do espantalho que diz:
"Ao exagerar, distorcer, ou simplesmente inventar o argumento de alguém, torna-se muito mais fácil apresentar a sua própria posição como sendo razoável."
Por que eu disse isso? Porque quando você entra na página da Elixir School (que eu adoro) sobre o Operador Pipe está escrito "chamadas em funções podem ficar tão incorporadas a outras chamadas de função, tornando-se muito difícil de seguir"e aí eles dão o seguinte exemplo :
foo(bar(baz(new_function(other_function()))))
Bem, mesmo sem pipe dá pra deixar o código acima bem mais legível. 코모? 아심:
valor = other_function()
nome_significativo_1 = new_function(valor)
nome_significativo_2 = baz(nome_significativo_1)
nome_significativo_3 = bar(nome_significativo_2)
foo(nome_significativo_3)
Ou seja, o código acima talvez fique, dependsendo da escolha dos "nomes significativos"das variáveis, até mais legível do que o example com pipe utilizado na Elixir School:
other_function() |> new_function() |> baz() |> bar() |> foo()
우리는 Elixir School을 사용하여 담배를 피울 때 파이프를 정당화할 수 있습니다.
Eu já sou meio chato em usar os pipes tudo numa mesma linha. OK, sei que no iex não tem muita escolha exceto fazer isto (colocar o pipe no fim da linha e pular para a próxima linha):
iex> "Elixir rocks" |>
String.upcase() |>
String.split()
Mas não vou escrever sobre o que não gosto e sim sobre o que gosto.
A tradução literal de pipe é cano e usando o operator pipe.
Na figura abaixo você pode ver como os dados fluem de uma função a outra através dos canos(파이프).
Neste example eu mostrei como você pode usar IO.inspect para ver o que acontece após cada ação do pipe.
Enum.take(1..100, 10)
|> IO.inspect(label: "inicial")
|> Enum.map(fn x -> x * 2 end)
|> IO.inspect(label: "Após map")
|> Enum.filter(fn x -> x > 4 end)
|> IO.inspect(label: "Após filter")
|> Enum.sum()
|> IO.inspect(label: "Após sum")
예를 들면 다음과 같습니다. Elixir를 사용할 수 있는 파이프를 사용하십시오. 의견이 있으시다면(어떤 의견, claro), 또는 파이프 데이샤 또는 코디고 메이스 레기벨!
표지 사진 by Kyle Glenn on Unsplash .
Reference
이 문제에 관하여(Use canos (pipes) semper que possível em Elixir!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/elixir_utfpr/use-canos-pipes-sempre-que-possivel-em-elixir-25ci텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)