Sobes.tech
Junior — Middle

Можете ли да обясните разликите между операциите flatMap и compactMap в програмните езици?

sobes.tech AI

Отговор от AI

В езици за програмиране като Swift, flatMap и compactMap се използват за преобразуване на колекции, но имат различни цели:

  • flatMap се прилага за преобразуване на елементите на колекцията в колекции и след това "изравнява" (flatten) резултата до един ниво. Например, ако всеки елемент се преобразува в масив, flatMap ще обедини всички тези масиви в един.

  • compactMap преобразува елементите на колекцията, като едновременно отхвърля всички стойности nil (или липсващи). Това е полезно, когато преобразуването може да върне опционална стойност и искаме да получим масив само с непразни резултати.

Пример в Swift:

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

// compactMap преобразува низове в Int, игнорирайки нечисловите
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap с масиви
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

По този начин, compactMap филтрира и преобразува, а flatMap обединява вложени колекции след преобразуването.