While-Loops가 Elixir를 사용하지 않는 이유는 무엇입니까?

6521 단어 elixir

While-Loops가 Elixir를 사용하지 않는 이유는 무엇입니까?



Se você já trabalhou com linguagens imperativas, decidiu mergulhar de cabeça nesta linguagem maravilhosa que é Elixir, você provavelmente já deve ter se perguntado como funcionam loops. Mas, será que realmente precisamos deles?

Elixir é uma linguagem funcional, o estado é imutável. Ela não possui estruturas básicas para loop como for 또는 while de linguagens imperativas convencionais. Veremos algumas alternativas muito interessantes para trabalhar.

이해력 활용



Utilizando comprehensions podemos criar códigos mais concisos para criar iterações.

iex> for n <- 1..10, do: n * 2
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]


Podemos observar a primeira parte dessa estrutura, o que chamamos de generators: n <- 1..10 . Em seguida nós multiplicamos a variável n por 2, e temos este resultado: [2, 4, 6...] .

Também conseguimos aplicar essa estrutura de for com listas aplicando generators.

iex> lista = [1, 2, 3, 4, 5]
iex> for n <- lista, do: rem(n)
[false, true, false, true, false]


Note que aplicamos a lista que definimos no generator para iterá-la, e em seguida verificamos se cada item dessa lista é par.

Iterando listas



Com a função each/2 Conseguimos iterar uma coleção de valores sem criar uma lista.

iex> lista = [1, 2, 3, 4, 5]
iex> Enum.each(lista, fn(n) -> IO.puts rem(n, 2) == 0 end)
false
true
false
true
false
:ok


Seguindo o mesmo example utilizado no último tópico, verificamos se cada item da lista é par. Porém, o retorno dessa função é apenas um átomo :ok .

Já com a função map/2 Conseguimos produzir uma nova lista.

iex> lista = [1, 2, 3, 4, 5]
iex> Enum.map(lista, fn(n) -> rem(n, 2) == 0 end)
[false, true, false, true, false]


Aplicando a mesma logica, nós temos um resultado semelhante ao primeiro de example utilizando comprehension.

활용 매크로



메타프로그래밍은 Imperativas의 언어를 While-Loop에서 사용할 수 있도록 Elixir를 사용하지 않습니다. 필요하지 않은 모든 것.

결론



중앙 주제에 대한 응답 é: não. Temos maneiras mais inteligentes e eficazes para trabalhar com listas e mapas.

좋은 웹페이지 즐겨찾기