Pouvez-vous expliquer les différences entre les opérations flatMap et compactMap dans les langages de programmation?
sobes.tech IA
Réponse de l'IA
Dans les langages de programmation comme Swift, flatMap et compactMap sont utilisés pour transformer des collections, mais ont des objectifs différents :
-
flatMapest appliqué pour transformer les éléments d'une collection en collections, puis "aplatit" (flatten) le résultat en un seul niveau. Par exemple, si chaque élément est transformé en un tableau,flatMapcombinera tous ces tableaux en un seul. -
compactMaptransforme les éléments de la collection tout en rejetant tous les valeursnil(ou absentes). Cela est utile lorsque la transformation peut retourner une valeur optionnelle, et que l'on souhaite obtenir un tableau uniquement avec des résultats non vides.
Exemple en Swift :
let numbers = ["1", "2", "three", "4"]
// compactMap convertit les chaînes en Int, en rejetant celles qui ne sont pas numériques
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]
// flatMap avec des tableaux
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]
Ainsi, compactMap filtre et transforme, tandis que flatMap combine des collections imbriquées après transformation.