Menu
Coddy logo textTech

flatMap

Fait partie de la section Logique et Flux du Journey Swift de Coddy. Leçon 29 sur 56.

flatMap est utilisé dans le cas où chaque élément produit plusieurs résultats. La fermeture renvoie un tableau ; flatMap les concatène tous en un seul tableau plat.

let groups = [[1, 2, 3], [4, 5], [6]]
let all = groups.flatMap { $0 }
print(all)                       // [1, 2, 3, 4, 5, 6]

Vous pouvez également effectuer un travail réel à l'intérieur de la fermeture. Mapper chaque valeur à un petit tableau et aplatir le résultat en une seule étape est le cas d'utilisation typique :

let nums = [1, 2, 3]
let pairs = nums.flatMap { [$0, $0 * $0] }
print(pairs)                     // [1, 1, 2, 4, 3, 9]

Comparez avec map : cela aurait produit un [[Int]], un tableau de petits tableaux, ce qui nécessiterait une étape supplémentaire pour l'aplatir. flatMap combine ces deux étapes en une seule.

challenge icon

Défi

Facile

Lisez deux lignes d'entrée :

  1. Une liste d'entiers séparés par des virgules, les nums
  2. Une liste d'entiers séparés par des virgules, les repeats (de la même longueur que nums)

Pour chaque i, répétez nums[i] exactement repeats[i] fois. Affichez le tableau plat résultant, joint avec ,. Utilisez flatMap.

Pour l'entrée 5,7,2 sur la ligne 1 et 3,1,2 sur la ligne 2, la sortie est 5,5,5,7,2,2.

Essayez vous-même

let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
let repeats = readLine()!.components(separatedBy: ",").map { Int($0)! }

// TODO: flatMap chaque (num, repeat) dans Array(repeating:count:); joindre avec ","
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et Flux

Entraînez-vous par vous-même : Playground Swift