Sobes.tech
Junior — Middle

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 :

  • flatMap est 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, flatMap combinera tous ces tableaux en un seul.

  • compactMap transforme les éléments de la collection tout en rejetant tous les valeurs nil (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.