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 ҷамъоварии дарунсохтро пас аз табдил додан муттаҳид мекунад.