CompactMap ja flatMap, mitkä ovat erot ja milloin käytät kumpaakin? Swift 4.1 esitteli uuden menetelmän ehdotuksella 0187: Introduce Filtermap to give more clarity in flatMap use cases.

käytä tätä menetelmää saadaksesi joukon epäoptiollisia arvoja, kun muunnoksesi tuottaa valinnaisen arvon.

Architecting SwiftUI apps with MVC and MVVMAlthough you can create a app simply by throw some code together, without best practices and a robust architecture, you ’ ll soon end up with unmanageable spaghetti code. Opi luomaan kiinteitä ja ylläpidettäviä sovelluksia, joissa on vähemmän vikoja tämän ilmaisen oppaan avulla.

katso kartan ja kompaktikartan erot seuraavassa esimerkissä:

milloin flatMap

käytä tätä menetelmää saadaksesi yksitasoisen kokoelman, kun muunnos tuottaa sekvenssin tai kokoelman jokaiselle elementille.

Katso kartan ja flatmapin ero seuraavasta esimerkistä:

itse asiassa s.flatMap(transform) vastaa Array(s.map(transform).joined()).

compactMap vs flatMap

yleinen nyrkkisääntö tässä muistuttaa itseäsi koodia kirjoitettaessa:

käytetään sekvenssissä ja muunnoksella, joka palauttaa valinnaisen arvon, käytetään compactMap. Jos näin ei ole, joko map tai flatMap pitäisi antaa sinulle tarvitsemasi tulokset.

Architecting SwiftUI apps with MVC and MVVMAlthough you can create a app simply by throw some code together, without best practices and a robust architecture, you ’ ll soon end up with unmanageable spaghetti code. Opi luomaan kiinteitä ja ylläpidettäviä sovelluksia, joissa on vähemmän vikoja tämän ilmaisen oppaan avulla.

syy nimetä se compactMap

vaikka jotkut ehdottivat filtermapin käyttöönottoa menetelmän nimeksi, Swiftin tiimi päätti valita compactmapin sijaan. Niiden motivaatioiden lukeminen selvittää asioita aika paljon ja selittää myös menetelmän toimivuutta.

”filterMap” on nimi, jolla on jonkin verran ennakkotapausta muissa ohjelmointikielissä, erityisesti funktionaalisissa, mutta joidenkin mielestä nimi oli vahvasti harhaanjohtava, koska yhdistelmäoperaationa se ei ollut aivan suodatin tai kartta. Vaihtoehdoista vahvin tuki näytti olevan ”compactMap”, joka perustuu ennakkotapaukseen” compact”, operaatio muista kielistä (erityisesti Ruby), joka palauttaa kopion syötteestä ilman nollia arvoja. Swiftillä ei ole tällä hetkellä tällaista operaatiota, eikä sitä itse asiassa ole tällä hetkellä mahdollista ilmaista; ydintiimi on kuitenkin samaa mieltä siitä, että sen lisääminen olisi järkevää ja että ”compactMap” on hyvä nimi operaatiolle.

Vastaa

Sähköpostiosoitettasi ei julkaista.