Rückblick – Pipeline Builder
Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy — Lektion 43 von 56.
Aufgabe
MittelErstellen Sie eine kleine Datenpipeline, die durch Closures gesteuert wird.
Lesen Sie drei Zeilen ein:
- Eine Ganzzahl
min - Eine Ganzzahl
scale - Eine durch Kommas getrennte Liste von Ganzzahlen
Definieren Sie zwei Closure-Factorys:
makeFilter(min: Int) -> (Int) -> Boolerfasstminund gibt ein Prädikatn > minzurückmakeScaler(by: Int) -> (Int) -> Interfasstbyund gibt eine Funktion zurück, die damit multipliziert
Definieren Sie dann eine Funktion pipeline(_ nums: [Int], filter: (Int) -> Bool, transform: (Int) -> Int) -> [Int], die zuerst filtert und dann transformiert.
Geben Sie drei Zeilen aus:
- Die Zahlen, die den Filter bestanden 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 TrimmenSuchen in StringsTeilen und ZusammenfügenTeilstrings ersetzenWiederholung – Benutzernamen-Check4Mengen
Mengen erstellenVereinigung und SchnittmengeDifferenz und symmetrische DifferenzTeilmenge und ObermengeRückblick – Tag-Filter7Projekt - Habit Tracker
ProjektübersichtAls erledigt markieren2Bereiche & Schrittweiten
Geschlossen vs. halboffenSchrittweiteRange-MethodenRanges in SwitchRückblick – Kalender-Grid5Funktionen höherer Ordnung Teil 1
MapFilterReduceVerkettung von map, filter, reduceRückblick – Wortstatistiken8Closures
Closure-GrundlagenTrailing ClosuresWerte erfassenClosures zurückgebenEigene Higher-OrderRückblick – Pipeline Builder