Parcours
/
Elixir
Elixir
/
Programme
/
Fonctions à plusieurs clauses
Fo

Fonctions à plusieurs clauses en Elixir

72 exercices

À propos de Fonctions à plusieurs clauses

En Elixir, une même fonction peut avoir plusieurs clauses. On y parvient en faisant du pattern matching sur les arguments de la fonction et en utilisant des gardes.

# 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
  • Utilise plusieurs clauses de fonction pour extraire la logique de contrôle des fonctions.
  • Les clauses sont essayées dans l'ordre, du haut vers le bas du fichier source, jusqu'à ce que l'une d'elles réussisse.
  • Si aucune ne réussit, la VM BEAM lève une FunctionClauseError.
  • Si des variables d'argument ne sont utilisées ni dans le corps de la fonction ni dans une garde, il faut les préfixer avec un _, sinon le compilateur émet un avertissement.
  • Les fonctions anonymes peuvent elles aussi avoir plusieurs clauses.
    fn
      13 -> "Awesome, that's my favorite"
      _ -> "That's not my favorite"
    end
    

Ne confonds pas les fonctions à plusieurs clauses avec la surcharge de fonctions que tu connais peut-être dans d'autres langages de programmation. En Elixir, les fonctions sont identifiées uniquement par leur nom et leur arité, et non par le type de leurs arguments (puisqu'il n'y a pas de typage statique). La fonction number/1 de l'exemple est considérée comme une seule fonction, quel que soit le nombre de clauses qu'elle contient.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Fonctions à plusieurs clauses

L'entraînement est verrouillé

Déverrouille 10 exercices de plus pour t'entraîner sur Fonctions à plusieurs clauses