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 միավորում է ներսի հավաքածուները փոխարկումից հետո: