CompactMap et flatMap, quelles sont les différences et quand utilisez-vous chacune? Swift 4.1 a introduit cette nouvelle méthode avec la proposition 0187: Introduire Filtermap pour gagner en clarté dans les cas d’utilisation de flatMap.

Utilisez cette méthode pour recevoir un tableau de valeurs non optionnelles lorsque votre transformation produit une valeur facultative.

Architecturer des applications SwiftUI avec MVC et Mvvmalors que vous pouvez créer une application simplement en jetant du code ensemble, sans les meilleures pratiques et une architecture robuste, vous vous retrouverez bientôt avec du code spaghetti ingérable. Apprenez à créer des applications solides et maintenables avec moins de bugs en utilisant ce guide gratuit.

Voir les différences entre une carte et une carte compacte dans l’exemple suivant :

Quand utiliser flatMap

Utilisez cette méthode pour recevoir une collection à un seul niveau lorsque votre transformation produit une séquence ou une collection pour chaque élément.

Voir la différence entre une carte et une carte plate dans l’exemple suivant :

En fait, s.flatMap(transform) équivaut à Array(s.map(transform).joined()).

compactMap vs flatMap

La règle générale ici pour vous rappeler lors de l’écriture de code:

Utilisé sur une séquence et ayant une transformation renvoyant une valeur optionnelle, utilisez compactMap. Sinon, map ou flatMap devrait vous donner les résultats dont vous avez besoin.

Architecturer des applications SwiftUI avec MVC et Mvvmalors que vous pouvez créer une application simplement en assemblant du code, sans les meilleures pratiques et une architecture robuste, vous vous retrouverez bientôt avec du code spaghetti ingérable. Apprenez à créer des applications solides et maintenables avec moins de bugs en utilisant ce guide gratuit.

La raison de le nommer compactMap

Bien que certains aient proposé d’introduire filterMap comme nom de méthode, l’équipe Swift a décidé d’opter pour compactMap à la place. La lecture de leurs motivations éclaircit beaucoup les choses et explique également la fonctionnalité de la méthode.

 » filterMap » est un nom avec un précédent dans d’autres langages de programmation, en particulier fonctionnels, mais certaines personnes ont fortement estimé que le nom était trompeur car, en tant qu’opération combinée, ce n’était pas tout à fait un filtre ou une carte. Parmi les alternatives, celle avec le support le plus fort semblait être « compactMap », qui s’appuie sur le précédent de « compact », une opération d’autres langages (notamment Ruby) qui renvoie une copie de l’entrée sans valeurs nulles. Swift n’a pas actuellement une telle opération, et en fait il n’est pas actuellement possible de l’exprimer; néanmoins, l’équipe de base convient que ce serait une opération raisonnable à ajouter, et que « compactMap » est un bon nom pour l’opération.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.