Trilhas
/
Elixir
Elixir
/
Programa
/
Funções anônimas
Fu

Funções anônimas em Elixir

4 exercícios

Sobre Funções anônimas

Funções anônimas são comumente usadas por conta própria em Elixir, como valores de retorno e como argumentos em funções de ordem superior, como Enum.map/2:

Enum.map([1, 2, 3], fn n -> n + 1 end)
# => [2, 3, 4]

As funções em Elixir são tratadas como cidadãos de primeira classe:

  • Funções nomeadas e anônimas podem ser atribuídas a variáveis.
  • Funções nomeadas e anônimas podem ser passadas como dados, como argumentos e valores de retorno.
  • Funções anônimas podem ser criadas dinamicamente.

Funções anônimas são criadas com a palavra-chave fn e chamadas com um ponto (.):

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

Funções anônimas também podem ser criadas com a forma abreviada de captura &.

  • O & inicial declara o início da expressão de captura.

  • &1, &2 e assim por diante referem-se aos argumentos posicionais da função anônima.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • O operador de captura & também pode ser usado para capturar funções nomeadas existentes:

    # Instead of:
    fn a, b -> a <= b end
    
    # We can capture the function using its name and arity:
    &<=/2
    

Funções anônimas em Elixir são closures. Elas podem acessar variáveis que estão no escopo quando a função é definida. Variáveis atribuídas dentro de uma função anônima não são acessíveis fora dela:

y = 2

square = fn ->
  x = 3
  x * y
end

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Funções anônimas

A prática está bloqueada

Desbloqueie mais 1 exercício para praticar Funções anônimas