Sobes.tech
Junior — Middle

Môžete vysvetliť rozdiely medzi operáciami flatMap a compactMap v programovacích jazykoch?

sobes.tech AI

Odpoveď od AI

V programovacích jazykoch ako je Swift, sa flatMap a compactMap sa používajú na transformáciu kolekcií, ale majú odlišné účely:

  • flatMap sa aplikuje na transformáciu prvkov kolekcie na kolekcie a následne "zploštenie" (flatten) výsledku do jednej úrovne. Napríklad, ak je každý prvok transformovaný na pole, flatMap tieto polia spojí do jedného.

  • compactMap transformuje prvky kolekcie, pričom súčasne odstraňuje všetky hodnoty nil (alebo chýbajúce). Je to užitočné, keď transformácia môže vrátiť voliteľnú hodnotu a chceme získať pole len s nenulovými výsledkami.

Príklad v Swift:

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

// compactMap konvertuje reťazce na Int, ignorujúc nečíselné
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap s poľami
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Týmto spôsobom, compactMap filtruje a transformuje, zatiaľ čo flatMap spája vnorené kolekcie po transformácii.