Erweiterte For-Schleife
Teil des Abschnitts Fundamentals der Rust-Journey von Coddy — Lektion 66 von 75.
Es gibt verschiedene Möglichkeiten, über ein Array zu iterieren, hier sind einige davon:
Betrachten Sie das folgende Array:
let numbers = [1, 2, 3, 4, 5];Direkter Iterator:
for num in numbers.iter() {} // Werte: 1, 2, 3, 4, 5
Index & Wert:
for (index, value) in numbers.iter().enumerate() { } // Werte: (0,1), (1,2), (2,3), (3,4), (4,5)
Slices einer bestimmten Größe:
for chunk in numbers.chunks(2) { } // Werte: [1,2], [3,4], [5]
Iterieren mit Mutation:
for num in numbers.iter_mut() { *num *= 2; } // Array wird zu: [2, 4, 6, 8, 10]
Aufgabe
EinfachErstellen Sie ein Programm, das eine Einkaufsliste mit Artikeln und deren Preisen verarbeitet und verschiedene Ansichten der Daten bereitstellt.
Das Programm sollte:
- Jede Artikelnummer und jeden Preis ausgeben (unter Verwendung von enumerate)
- Die Preise paarweise (unter Verwendung von chunks) als "bundle deals" ausgeben
- Einen Rabatt von 10% auf alle Preise anwenden (unter Verwendung von iter_mut)
- Die endgültigen ermäßigten Preise ausgeben
Spickzettel
Verschiedene Möglichkeiten, über Arrays in Rust zu iterieren:
Direkter Iterator:
for num in numbers.iter() {}
// Values: 1, 2, 3, 4, 5Index & Wert mit enumerate:
for (index, value) in numbers.iter().enumerate() { }
// Values: (0,1), (1,2), (2,3), (3,4), (4,5)Slices einer bestimmten Größe mit chunks:
for chunk in numbers.chunks(2) { }
// Values: [1,2], [3,4], [5]Iterieren mit Mutation unter Verwendung von iter_mut:
for num in numbers.iter_mut() {
*num *= 2;
}
// Array becomes: [2, 4, 6, 8, 10]Probier es selbst
fn main() {
let mut prices = [2.75, 1.50, 5.00, 3.5, 4.1, 2.25, 7.9];
println!("Original Prices:");
// TODO: Verwende enumerate, um jede Artikelnummer und den Preis auszugeben
// Erwartet: "Item 1: $2.99" usw.
println!("\nBundle Deals:");
// TODO: Verwende chunks, um Preispaare und deren Summen auszugeben
// Erwartet: "Bundle 1: $2.99 + $1.50 = $4.49" usw.
// TODO: Verwende iter_mut, um 10% Rabatt auf alle Preise anzuwenden
println!("\nPrices after 10% discount:");
// TODO: Endgültige Preise nach dem Rabatt ausgeben
// Erwartet: "$2.69" usw.
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Fundamentals
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenVergleichsoperatorenString-Vergleich7Grundlagen IO
Ausgabe in die KonsoleBenutzereingaben lesenWiederholung - Bis 120Wiederholung - Wahr oder Falsch5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung - Einfache LogikLogische Operatoren Teil 311Funktionen
Funktionen deklarierenParameter und ArgumenteRückgabewerteMehrere RückgabewerteWiederholung - Sigma-FunktionWiederholung - Validierungsfunktion14Iterieren über Arrays
Range-LeitfadenErweiterte For-SchleifeBorrowing in SchleifenGängige Array-Operationen3Variablen Teil 2
TypdeklarationNamenskonventionenTypinferenzRückblick - Variablen initialisierenTypumwandlung6Entscheidungsfindung
If-AusdrückeIf-ElseMatch-AnweisungZusammenfassung - If-ElseVerschachteltes If-Else9Schleifen
For-Schleife über SerienWhile-SchleifeBreakContinueVerschachtelte SchleifenSchleifen-LabelsEndlosschleifeRückblick – Dynamische Eingabe