CompactMap und flatMap, was sind die Unterschiede und wann verwenden Sie sie? Swift 4.1 führte diese neue Methode mit dem Vorschlag 0187 ein: Filtermap einführen, um mehr Klarheit in flatMap-Anwendungsfällen zu gewinnen.

Verwenden Sie diese Methode, um ein Array nicht optionaler Werte zu empfangen, wenn Ihre Transformation einen optionalen Wert erzeugt.

Architektur von SwiftUI-Apps mit MVC und MVVMAlobwohl Sie eine App erstellen können, indem Sie einfach Code zusammenwerfen, ohne Best Practices und eine robuste Architektur, werden Sie bald mit unüberschaubarem Spaghetti-Code enden. In diesem kostenlosen Handbuch erfahren Sie, wie Sie solide und wartbare Apps mit weniger Fehlern erstellen.

Die Unterschiede zwischen einer Map und einer compactMap finden Sie im folgenden Beispiel:

Verwendung von flatMap

Verwenden Sie diese Methode, um eine einstufige Auflistung zu erhalten, wenn Ihre Transformation eine Sequenz oder Auflistung für jedes Element erzeugt.

Sehen Sie sich den Unterschied zwischen einer Map und einer flatMap im folgenden Beispiel an:

Tatsächlich entspricht s.flatMap(transform) Array(s.map(transform).joined()).

compactMap vs flatMap

Die allgemeine Faustregel hier, um sich beim Schreiben von Code daran zu erinnern:

Wird für eine Sequenz verwendet und hat eine Transformation, die einen optionalen Wert zurückgibt, verwenden Sie compactMap . Wenn nicht, sollten Sie entweder map oder flatMap die gewünschten Ergebnisse erhalten.

Architektur von SwiftUI-Apps mit MVC und MVVMOBWOHL Sie eine App erstellen können, indem Sie einfach Code zusammenwerfen, ohne Best Practices und eine robuste Architektur, werden Sie bald mit unüberschaubarem Spaghetti-Code enden. In diesem kostenlosen Handbuch erfahren Sie, wie Sie solide und wartbare Apps mit weniger Fehlern erstellen.

Der Grund für die Benennung compactMap

Obwohl einige vorschlugen, filterMap als Methodennamen einzuführen, entschied sich das Swift-Team stattdessen für compactMap . Das Lesen ihrer Motivationen klärt die Dinge ziemlich auf und erklärt auch die Funktionalität der Methode.

“ filterMap“ ist ein Name mit einem Präzedenzfall in anderen Programmiersprachen, insbesondere in funktionalen, aber einige Leute waren der Meinung, dass der Name irreführend war, da es sich bei einer kombinierten Operation nicht um einen Filter oder eine Karte handelte. Von den Alternativen schien die mit der stärksten Unterstützung „compactMap“ zu sein, die auf dem Präzedenzfall „compact“ aufbaut, einer Operation aus anderen Sprachen (insbesondere Ruby), die eine Kopie der Eingabe ohne Nullwerte zurückgibt. Swift hat derzeit keine solche Operation, und tatsächlich ist es derzeit nicht möglich, sie auszudrücken; Dennoch stimmt das Kernteam zu, dass es eine vernünftige Operation wäre, sie hinzuzufügen, und dass „compactMap“ ein guter Name für die Operation ist.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.