Sobes.tech
Junior — Middle

Proqramlaşdırma dillərində flatMap və compactMap əməliyyatları arasındakı fərqləri izah edə bilərsinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Swift kimi proqramlaşdırma dillərində, flatMapcompactMap kolleksiyaları çevirmək üçün istifadə olunur, lakin onların məqsədləri fərqlidir:

  • flatMap kolleksiyanın elementlərini kolleksiyalara çevirmək və sonra nəticəni "yassi" etmək (flatten) üçün tətbiq edilir. Məsələn, hər element bir array-ə çevrilərsə, flatMap bu array-ləri birləşdirər.

  • compactMap kolleksiyanın elementlərini çevirmək, eyni zamanda bütün nil (və ya mövcud olmayan) dəyərləri atmaq üçün istifadə olunur. Bu, çevirmə zamanı opsional dəyər qaytarıla bilən hallarda və yalnız boş olmayan nəticələrlə array əldə etmək istəndikdə faydalıdır.

Swift nümunəsi:

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

// compactMap, stringləri Int-ə çevirir və sayısal olmayanları atır
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

// flatMap array-lərlə
let nested = [[1, 2], [3, 4], [5]]
let flat = nested.flatMap { $0 } // [1, 2, 3, 4, 5]

Beləliklə, compactMap filtrləyir və çevrilir, flatMap isə iç-içə kolleksiyaları çevirdikdən sonra birləşdirir.