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