CompactMap och flatMap, vad är skillnaderna och när använder du var och en? Swift 4.1 introducerade denna nya metod med förslaget 0187: introducera Filtermap för att få mer tydlighet i flatMap-användningsfall.

använd den här metoden för att ta emot en matris med icke-valfria värden när din omvandling ger ett valfritt värde.

Architecting SwiftUI apps med MVC och MVVMAlthough du kan skapa en app helt enkelt genom att kasta lite kod tillsammans, utan bästa praxis och en robust arkitektur, kommer du snart sluta med ohanterlig spaghetti kod. Lär dig hur du skapar solida och underhållbara appar med färre buggar med den här gratisguiden.

se skillnaderna mellan en karta och en compactMap i följande exempel:

när du ska använda flatMap

använd den här metoden för att ta emot en samling på en nivå när din omvandling producerar en sekvens eller samling för varje element.

se skillnaden mellan en karta och en flatMap i följande exempel:

faktum är att s.flatMap(transform) motsvarar Array(s.map(transform).joined()).

compactMap vs flatMap

den allmänna tumregeln här för att påminna dig själv när du skriver kod:

används i en sekvens och har en transformation som returnerar ett valfritt värde, använd compactMap. Om inte, antingen map eller flatMap ska ge dig de resultat du behöver.

Architecting SwiftUI apps med MVC och MVVMAlthough du kan skapa en app helt enkelt genom att kasta lite kod tillsammans, utan bästa praxis och en robust arkitektur, kommer du snart sluta med ohanterlig spaghetti kod. Lär dig hur du skapar solida och underhållbara appar med färre buggar med den här gratisguiden.

anledningen till att namnge det compactMap

även om vissa föreslog att införa filterMap som metodnamn, beslutade Swift-teamet att gå till compactMap istället. Att läsa deras motiv rensar upp saker ganska mycket och förklarar metodens funktionalitet också.

”filterMap” är ett namn med något prejudikat i andra programmeringsspråk, särskilt funktionella, men vissa kände starkt att namnet var vilseledande eftersom det som en kombinerad operation inte var ett filter eller en karta. Av alternativen verkade den med det starkaste stödet vara ”compactMap”, som bygger på prejudikatet” compact”, en operation från andra språk (särskilt Ruby) som returnerar en kopia av ingången utan nollvärden. Swift har för närvarande inte en sådan operation, och i själva verket är det för närvarande inte möjligt att uttrycka det; ändå är kärnteamet överens om att det skulle vara en rimlig operation att lägga till, och att ”compactMap” är ett bra namn för operationen.

Lämna ett svar

Din e-postadress kommer inte publiceras.