CompactMap en flatMap, wat zijn de verschillen en wanneer gebruikt u elk? Swift 4.1 introduceerde deze nieuwe methode met het voorstel 0187: Introduceer Filtermap om meer duidelijkheid te krijgen in flatMap use cases.

Gebruik deze methode om een array van niet-optionele waarden te ontvangen wanneer uw transformatie een optionele waarde produceert.

het ontwerpen van SwiftUI apps met MVC en MVVMAlthough you can create a app simply by throwing some code together, without best practices and a robuust architecture, you ‘ ll soon end up with unmanageable spaghetti code. Leer hoe u solide en onderhoudbare apps te maken met minder bugs met behulp van deze gratis gids.

zie de verschillen tussen een kaart en een compactMap in het volgende voorbeeld:

wanneer gebruikt u flatMap

Gebruik deze methode om een verzameling op één niveau te ontvangen wanneer uw transformatie een reeks of verzameling voor elk element produceert.

zie het verschil tussen een kaart en een platte kaart in het volgende voorbeeld:

in feite is s.flatMap(transform) gelijk aan Array(s.map(transform).joined()).

compactMap vs flatMap

de algemene vuistregel hier om uzelf eraan te herinneren wanneer u code schrijft:

gebruikt in een sequentie en met een transformatie die een optionele waarde retourneert, gebruik compactMap. Zo niet, dan geeft map of flatMap u de resultaten die u nodig hebt.

Architecting SwiftUI apps with MVC and MVVMAlthough you can create an app just by throwing some code together, without best practices and a robuust architecture, you ‘ ll soon end up up with unmanageable spaghetti code. Leer hoe u solide en onderhoudbare apps te maken met minder bugs met behulp van deze gratis gids.

de reden voor de naam compactMap

hoewel sommigen voorstelden om filterMap als methodenaam te introduceren, besloot het Swift-team in plaats daarvan voor compactMap te gaan. Het lezen van hun motivaties verheldert dingen heel veel en verklaart de functionaliteit van de methode ook.

“filterMap” is een naam met een precedent in andere programmeertalen, vooral functionele, maar sommige mensen vonden sterk dat de naam misleidend was omdat, als een gecombineerde operatie, het was niet helemaal een filter of een kaart. Van de alternatieven, degene met de sterkste ondersteuning leek te zijn “compactMap”, die voortbouwt op het precedent van “compact”, een operatie uit andere talen (met name Ruby) die een kopie van de invoer zonder nul waarden retourneert. Swift heeft momenteel geen dergelijke operatie, en in feite is het momenteel niet mogelijk om het uit te drukken; niettemin is het kernteam het erover eens dat het een redelijke operatie zou zijn om toe te voegen, en dat “compactMap” een goede naam is voor de operatie.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.