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