Sommaire

Closures Closures

1. Présentation

Ressemblant aux expressions Lambda de certains autres langages, les closures permettent en Swift de manipuler des blocs d’instruction comme toute autre structure de données : les stocker dans des variables ou des propriétés, les passer en paramètre ou les définir comme valeur de retour d’une fonction.

On les utilise souvent en Swift. Dans le cas des animations, elles permettent, par exemple, de déclarer les valeurs à manipuler mais aussi le code à exécuter à la fin d’une animation.

Une closure est un type avec une notation bien particulière.

(paramètres) -> (retour)

Le code suivant permet par exemple de déclarer une variable ou propriété maClosure de type closure prenant en paramètre deux entiers et retournant un booléen :

var maClosure: (Int, Int) -> (Bool)

Pour déclarer la closure elle-même, on utilise la syntaxe suivante :

{ (paramètres) -> (retour) in code à exécuter }

On peut passer à la variable maClosure une fonction qui prend par exemple deux entiers et qui renvoie vrai s’ils sont égaux :

maClosure = { (a: Int, b: Int) -> (Bool) in 
    return a == b 
}

Ici on nomme les deux paramètres entiers a et b afin de pouvoir les utiliser dans le bloc de code, on spécifie que la closure renvoie un booléen avec la syntaxe -> (Bool), on utilise ensuite les paramètres a et b dans une instruction ...