map et flatMap

Mohamed Ghebaji
3 min readAug 19, 2017

--

La programmation fonctionnelle est un paradigme de programmation qui a été introduit en Swift par l’intermédiaire de nombreuses fonctions comme Map, flatMap, reduce, filter, foreach

Dans cet article, nous nous intéresserons seulement aux fonctions map et flatMap. Ces dernières sont des fonctions d’ordre supérieur qui prennent en paramètre une ou plusieurs autres fonctions et / ou retournent une fonction. Elles sont utiles pour manipuler les collections et les types optionnels.

Map

Vous pouvez utiliser la fonction map pour boucler une collection et appliquer la même opération à chaque élément de la collection.

Voici sa signature :

La fonction map est générique et prend en paramètre une fonction et retourne une liste d’éléments. Cette fonction transforme une valeur donnée en une autre valeur(pas forcément du même type).

Voici un cas d’utilisation de la fonction map :

Dans ce contexte la fonction map retourne une nouvelle liste contenant chaque élément de la liste initiale multiplier par deux.

Nous pouvons aussi appliquer map pour convertir le type des éléments de la liste initiale, voici un exemple :

L’utilisation de la fonction map n’est pas limitée aux Array vous pouvez l’utiliser partout ou vous avez une collection et le résultat sera toujours une liste. Voici un exemple pour l’appliquer sur un dictionnaire :

flatMap

la fonction flatMap est équivalent à la fonction map mais elle apporte une fonctionnalité supplémentaire qui est de pouvoir aplatir une collection.

Voici sa signature :

La signature est quasiment la même que celle de la fonction map, la seule différence est que la fonction en paramètre retourne un optionnel de type générique.

Voici un premier cas d’utilisation pour aplatir une liste de liste :

Comme vous pouvez le remarquer la fonction flatMap retourne tous les éléments de la liste initiale en l’aplatissant en une seule liste.

Mais le pouvoir réel de flatMap est de faire le tri entre les éléments qui sont nul et les autres éléments d’une liste comme dans cet exemple :

Pour pousser à fond l’utilisation de map et flatMap, vous pouvez les enchainer dans une seule opération comme dans cet exemple :

Ici nous avons appliquer flatMap sur le constante stringURL pour le rendre non optionnel et le convertir en type URL ensuite nous avons appliquer map sur le résultat du flatMap en lui passant en paramètre la méthode request.

Conclusion

Nous espérons que cet article vous aura aider à comprendre les deux fonctions map et flatMap. N’hésitez pas à laisser un commentaire si vous avez des questions ou des remarques.

--

--