Sobes.tech
Junior — Middle

Dasturlash tillarida flatMap va compactMap operatsiyalari o'rtasidagi farqlarni tushuntirib bera olasizmi?

sobes.tech AI

AIdan javob

Swift kabi dasturlash tillarida, flatMap va compactMap kolleksiyalarni o'zgartirish uchun ishlatiladi, ammo ularning maqsadlari farq qiladi:

  • flatMap kolleksiyaning elementlarini kolleksiyalarga aylantirish va natijani bitta darajaga "yassi" qilish uchun qo'llaniladi. Masalan, har bir elementni massivga aylantirilsa, flatMap bu massivlarni bitta massivga birlashtiradi.

  • compactMap kolleksiyaning elementlarini o'zgartiradi va bir vaqtning o'zida barcha nil (yoki mavjud bo'lmagan) qiymatlarni tashlab yuboradi. Bu, agar o'zgartirish ixtiyoriy qiymat qaytarishi mumkin bo'lsa va faqat bo'sh bo'lmagan natijalar bilan massiv olish istalgan bo'lsa, qulay.

Swift misoli:

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

// compactMap satrlarni Int ga aylantiradi, raqamli bo'lmaganlarni tashlab yuboradi
let ints = numbers.compactMap { Int($0) } // [1, 2, 4]

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

Shu tarzda, compactMap filtrlash va o'zgartirishni amalga oshiradi, flatMap esa ichma-ich kolleksiyalarni o'zgartirishdan so'ng birlashtiradi.