Tracce
/
Elixir
Elixir
/
Programma
/
Funzioni con più clausole
Fu

Funzioni con più clausole in Elixir

72 esercizi

Informazioni su Funzioni con più clausole

In Elixir, una singola funzione può avere più clausole. Lo si ottiene con il pattern matching degli argomenti della funzione e con l'uso delle guardie.

# pattern matching the argument
def number(7) do
  "Awesome, that's my favorite"
end

# using a guard
def number(n) when is_integer(n) do
  "That's not my favorite"
end

def number(_n) do
  "That's not even a number!"
end
  • Usa più clausole di funzione per estrarre la logica di controllo dalle funzioni.
  • Le clausole vengono provate in ordine, dall'alto verso il basso del file sorgente, finché una non riesce.
  • Se nessuna riesce, la BEAM VM solleva un FunctionClauseError.
  • Se le variabili degli argomenti non vengono usate né nel corpo della funzione né in una guardia, dovrebbero essere prefissate con un _, altrimenti il compilatore emette un avviso.
  • Anche le funzioni anonime possono avere più clausole.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Tieni presente che le funzioni con più clausole non vanno confuse con l'overloading delle funzioni che potresti conoscere da altri linguaggi di programmazione. In Elixir, le funzioni sono identificate solo dal loro nome e dalla loro arietà, non dai tipi degli argomenti (dato che non c'è tipizzazione statica). La funzione number/1 dell'esempio è considerata un'unica funzione indipendentemente da quante clausole ha.

Modifica tramite GitHub Il collegamento si apre in una nuova finestra o scheda

Impara Funzioni con più clausole

La pratica è bloccata

Sblocca 10 altri esercizi per esercitarti su Funzioni con più clausole