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:
-
flatMapkolleksiyaning elementlarini kolleksiyalarga aylantirish va natijani bitta darajaga "yassi" qilish uchun qo'llaniladi. Masalan, har bir elementni massivga aylantirilsa,flatMapbu massivlarni bitta massivga birlashtiradi. -
compactMapkolleksiyaning elementlarini o'zgartiradi va bir vaqtning o'zida barchanil(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.