Parcours
/
Elixir
Elixir
/
Programme
/
Fonctions anonymes
Fo

Fonctions anonymes en Elixir

4 exercices

À propos de Fonctions anonymes

Les fonctions anonymes sont couramment utilisées dans tout Elixir, seules, comme valeurs de retour ou comme arguments de fonctions d'ordre supérieur telles que Enum.map/2 :

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

En Elixir, les fonctions sont des citoyens de première classe :

  • Les fonctions nommées et anonymes peuvent être affectées à des variables.
  • Les fonctions nommées et anonymes peuvent être transmises comme des données, en arguments ou en valeurs de retour.
  • Les fonctions anonymes peuvent être créées dynamiquement.

Les fonctions anonymes se créent avec le mot-clé fn et s'invoquent avec un point (.) :

function_variable = fn n -> n + 1 end

function_variable.(1)
# => 2

Les fonctions anonymes peuvent aussi se créer avec la forme abrégée de capture &.

  • Le & initial marque le début de l'expression de capture.

  • &1, &2, etc. font référence aux arguments positionnels de la fonction anonyme.

    # Instead of:
    fn x, y -> abs(x) + abs(y) end
    
    # We can write:
    &(abs(&1) + abs(&2))
    
  • L'opérateur de capture & peut aussi servir à capturer une fonction nommée existante :

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

Les fonctions anonymes en Elixir sont des fermetures. Elles peuvent accéder aux variables qui sont dans la portée au moment où la fonction est définie. Les variables affectées à l'intérieur d'une fonction anonyme ne sont pas accessibles en dehors de celle-ci :

y = 2

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

square.()
# => 6

x
# => ** (CompileError): undefined function x/0
Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet

Apprends Fonctions anonymes

L'entraînement est verrouillé

Déverrouille 1 exercice de plus pour t'entraîner sur Fonctions anonymes