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 ички коллекциялардын өзгөртүүдөн кийин бириктирет.