Sobes.tech
Junior — Middle

Kun je de verschillen tussen de operaties flatMap en compactMap in programmeertalen uitleggen?

sobes.tech AI

Antwoord van AI

In programmeertalen zoals Swift worden flatMap en compactMap gebruikt om collecties te transformeren, maar ze hebben verschillende doelen:

  • flatMap wordt toegepast om de elementen van een collectie te transformeren naar collecties en vervolgens het resultaat "plat" te maken (flatten). Bijvoorbeeld, als elk element wordt omgezet in een array, combineert flatMap al deze arrays tot één.

  • compactMap transformeert de elementen van de collectie, terwijl het tegelijkertijd alle nil-waarden (of ontbrekende waarden) weggooit. Dit is handig wanneer de transformatie een optioneel resultaat kan geven, en je alleen een array wilt met niet-lege resultaten.

Voorbeeld in Swift:

let numbers = ["1", "2", "three", "4"]

// compactMap converteert strings naar Int, waarbij niet-numerieke strings worden genegeerd
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap met arrays
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Op deze manier filtert en transformeert compactMap, terwijl flatMap geneste collecties na transformatie samenvoegt.