Rückblick – Pipeline-Builder
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 43 von 56.
Aufgabe
MittelErstelle eine kleine Datenpipeline, die von Closures gesteuert wird.
Lies drei Zeilen ein:
- Eine Ganzzahl
min - Eine Ganzzahl
scale - Eine durch Kommas getrennte Liste von Ganzzahlen
Definiere zwei Closure-Fabriken:
makeFilter(min: Int) -> (Int) -> Boolerfasstminund gibt ein Prädikatn > minzurückmakeScaler(by: Int) -> (Int) -> Interfasstbyund gibt eine Funktion zurück, die mit diesem Wert multipliziert
Definiere anschließend eine Funktion pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int], die zuerst filtert und anschließend transformiert.
Gib drei Zeilen aus:
- Die Zahlen, die den Filter überstanden haben, verbunden mit
, - Dieselben Zahlen nach der Skalierung, verbunden mit
, - Die Summe der skalierten Werte
Für die Eingabe 5 / 3 / 2,7,3,8,9 lautet die Ausgabe:
7,8,9
21,24,27
72Probier es selbst
let minVal = Int(readLine()!)!
let scale = Int(readLine()!)!
let nums = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: makeFilter / makeScaler erstellen, die Closures zurückgeben; pipeline(_:filter:transform:);
// dann gefilterte, skalierte Werte und die Summe der skalierten Werte ausgeben
Alle Lektionen in Logik & Kontrollfluss
1Strings im Detail
Zählen und IndizesGroß-/Kleinschreibung und TrimSuchen in StringsAufteilen und ZusammenfügenTeilstrings ersetzenRückblick – Benutzernamen prüfen4Mengen
Mengen erstellenVereinigung und SchnittmengeSubtraktion und symmetrische DifferenzTeilmenge und ObermengeWiederholung – Tag-Filter7Projekt – Gewohnheitstracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteBereichsmethodenBereiche in SwitchRückblick – Kalender-Raster5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerketten von Map, Filter und ReduceRückblick – Wortstatistik8Closures
Grundlagen von ClosuresNachgestellte ClosuresWerte erfassenClosures zurückgebenBenutzerdefinierte Higher-Order-FunktionenRückblick – Pipeline-BuilderÜbe selbstständig: Swift-Playground