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