Parcours
/
Elixir
Elixir
/
Programme
/
Filtrage par motif
Fi

Filtrage par motif en Elixir

73 exercices

À propos de Filtrage par motif

Quand on écrit des fonctions en Elixir, on peut s'appuyer sur un style assertif grâce au filtrage par motif :

def read_file() do
  {:ok, contents} = File.read("hello.txt")
  contents
end
  • Le filtrage par motif s'effectue explicitement à l'aide de l'opérateur de correspondance, =/2.

    • La correspondance réussit quand la forme des données à gauche de l'opérateur correspond à celle des données à droite.

    • Quand la correspondance réussit, les variables à gauche sont liées aux valeurs de droite.

    • Utiliser un tiret bas, _, permet d'ignorer les valeurs à ces endroits.

      {:ok, number, _} = {:ok, 5, [4.5, 6.3]}
      number
      # => 5 is bound to this variable
      
    • L'opérateur pin ^ permet d'empêcher qu'une variable soit reliée de nouveau et, à la place, de faire correspondre le motif à sa valeur existante.

      number = 10
      {:ok, ^number, _} = {:ok, 5, [4.5, 6.3]}
      # => ** (MatchError) no match of right hand side value: {:ok, 5, [4.5, 6.3]}
      
  • Une correspondance de motif peut aussi apparaître dans la tête d'une clause de fonction, de sorte que seuls les arguments qui correspondent au motif appellent la fonction.

  • Il est possible de lier des variables dans le motif d'une clause de fonction.

    defmodule Example do
      def named_function(:a = atom_variable) do
        {atom_variable, 1}
      end
    end
    
    Example.named_function(:a)
    # => {:a, 1}
    # The first function clause matches, so it is invoked
    
    Example.named_function(:b)
    # => ** (FunctionClauseError) no function clause matching in Example.named_function/1
    
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Filtrage par motif

L'entraînement est verrouillé

Déverrouille 10 exercices de plus pour t'entraîner sur Filtrage par motif