Sobes.tech
Junior — Middle

Meg tudod magyarázni a különbségeket a flatMap és a compactMap műveletek között a programozási nyelvekben?

sobes.tech MI

Válasz az MI-től

Swifthez hasonló programozási nyelvekben, a flatMap és a compactMap kollekciók átalakítására szolgálnak, de különböző célokra:

  • A flatMap alkalmazható a kollekció elemeinek kollekciókká alakítására, majd az eredmény "lapít" (flatten). Például, ha minden elem egy tömbbé alakul, a flatMap ezeket a tömböket egyesíti.

  • A compactMap a kollekció elemeit alakítja át, miközben egyszerre elveti az összes nil (vagy hiányzó) értéket. Ez akkor hasznos, ha az átalakítás opcionális értéket adhat vissza, és csak a nem üres eredményeket tartalmazó tömböt akarjuk.

Swift példával:

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

// compactMap a stringeket Int-re alakítja, elvetve a nem numerikusakat
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap tömbökkel
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Így a compactMap szűr és átalakít, míg a flatMap összefűzi a beágyazott kollekciókat az átalakítás után.