Menu
Coddy logo textTech

Pipelines erstellen

Teil des Abschnitts Logik & Kontrollfluss der Swift-Journey von Coddy. Lektion 31 von 56.

Die Methoden, die Sie gesammelt haben, map, filter, reduce, compactMap, flatMap, sorted(by:), sind das alltägliche Swift-Toolkit. Echter Code fügt sie zusammen.

struct Order {
    let item: String
    let qty: Int
}
let orders = [Order(item: "apple", qty: 3), Order(item: "bread", qty: 0), Order(item: "milk", qty: 5)]
let names = orders
    .filter { $0.qty > 0 }
    .sorted { $0.qty > $1.qty }
    .map { $0.item }
print(names)                  // ["milk", "apple"]

Lesen Sie die Kette von oben nach unten: Behalten Sie nicht-leere Bestellungen bei, sortieren Sie absteigend nach der Menge und behalten Sie dann nur die Namen.

Pipelines gewinnen, wenn jeder Schritt einen einzigen Zweck hat. Wenn Sie feststellen, dass Sie zwei Dinge gleichzeitig innerhalb eines Closures tun (Mapping und Filtern), teilen Sie diese in zwei Schritte auf. Die Kette bleibt lesbar, während sie wächst.

challenge icon

Aufgabe

Mittel

Lies eine einzelne Eingabezeile ein: eine durch Kommas getrennte Liste von name:price:qty-Einträgen. Einige Einträge sind fehlerhaft und sollten übersprungen werden: Jeder Eintrag, dessen Preis oder Menge keine gültige Ganzzahl ist.

Erstelle eine Pipeline, die für jeden gültigen Eintrag mit qty > 0 eine Zeile erzeugt, absteigend nach der Gesamtsumme (price * qty) sortiert, im folgenden Format:

<name>: <total>

Gib nach den Zeilen für die einzelnen Einträge eine Zusammenfassungszeile aus: Sum: <n> mit der Gesamtsumme.

Für die Eingabe apple:3:2,bread:bad:1,milk:4:5,cheese:8:0,salt:2:7 lautet die Ausgabe:

milk: 20
salt: 14
apple: 6
Sum: 40

Probier es selbst

let entries = readLine()!.components(separatedBy: ",")

// TODO: Pipeline mit compactMap (parse), filter (qty > 0),
// sorted (total desc), map (format); Zeilen + Sum ausgeben
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Kontrollfluss

Übe selbstständig: Swift-Playground