Tracce
/
Elixir
Elixir
/
Programma
/
Funzioni anonime
Fu

Funzioni anonime in Elixir

4 esercizi

Informazioni su Funzioni anonime

Le funzioni anonime si usano comunemente in tutto Elixir da sole, come valori restituiti e come argomenti in funzioni di ordine superiore come Enum.map/2:

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

In Elixir, le funzioni sono trattate come cittadini di prima classe:

  • Le funzioni con nome e le funzioni anonime possono essere assegnate a delle variabili.
  • Le funzioni con nome e le funzioni anonime possono essere passate in giro come dati, come argomenti e come valori restituiti.
  • Le funzioni anonime possono essere create dinamicamente.

Le funzioni anonime si creano con la parola chiave fn e si chiamano con un punto (.):

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

Le funzioni anonime possono essere create anche con la sintassi abbreviata di cattura &.

  • Il & iniziale dichiara l'inizio dell'espressione di cattura.

  • &1, &2 e così via si riferiscono agli argomenti posizionali della funzione anonima.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • L'operatore di cattura & può essere usato anche per catturare una funzione con nome esistente:

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

Le funzioni anonime in Elixir sono closure. Possono accedere alle variabili che sono nello scope nel momento in cui la funzione viene definita. Le variabili assegnate all'interno di una funzione anonima non sono accessibili dall'esterno:

y = 2

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

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Funzioni anonime

La pratica è bloccata

Sblocca un altro esercizio per esercitarti su Funzioni anonime