Über einen Vektor iterieren
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 11 von 66.
Nachdem Sie nun wissen, wie man Vektoren erstellt und auf einzelne Elemente zugreift, lernen wir nun, wie man jedes Element in einem Vektor systematisch verarbeitet. Die for-Schleife ist perfekt für diese Aufgabe geeignet, da sie es Ihnen ermöglicht, jedes Element nacheinander zu besuchen.
Hier ist die grundlegende Syntax für das Iterieren über einen Vektor:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}Beachten Sie das & vor names – dies erstellt eine Referenz auf den Vektor, was es Ihnen ermöglicht, jedes Element zu lesen, ohne den Besitz am Vektor selbst zu übernehmen. Jede Iteration gibt Ihnen über die Schleifenvariable name Zugriff auf jeweils ein Element.
Die for-Schleife übernimmt automatisch die Bereichsprüfung für Sie. Im Gegensatz zur manuellen Indizierung werden Sie nie versehentlich versuchen, auf ein Element zuzugreifen, das nicht existiert. Die Schleife durchläuft genau so viele Elemente, wie der Vektor enthält, was sie sowohl sicher als auch praktisch macht.
Sie können dieses Muster mit jeder Art von Vektor verwenden:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Dieser Ansatz ist die gebräuchlichste und idiomatischste Art, alle Elemente in einem Vektor zu verarbeiten, wenn Sie deren Werte lesen müssen.
Aufgabe
EinfachSchreiben Sie eine Funktion sum_all_elements, die einen Vektor numbers entgegennimmt und die Summe all seiner Elemente zurückgibt.
Verwenden Sie eine for-Schleife, um über den Vektor zu iterieren und die Summe aller Elemente zu akkumulieren.
Parameter:
numbers(Vec<i32>): Der Vektor aus Ganzzahlen, die summiert werden sollen
Rückgabewert: Die Summe aller Elemente im Vektor (i32)
Spickzettel
Um über einen Vektor zu iterieren, verwenden Sie eine for-Schleife mit einer Referenz auf den Vektor:
let names = vec!["Alice", "Bob", "Charlie"];
for name in &names {
println!("Hello, {}!", name);
}Das & vor dem Vektornamen erstellt eine Referenz, die es Ihnen ermöglicht, jedes Element zu lesen, ohne den Besitz (Ownership) zu übernehmen. Die Schleife übernimmt automatisch die Bereichsprüfung und besucht genau so viele Elemente, wie der Vektor enthält.
Dieses Muster funktioniert mit jedem Vektortyp:
let scores = vec![85, 92, 78, 90];
for score in &scores {
println!("Score: {}", score);
}Probier es selbst
fn sum_all_elements(numbers: Vec<i32>) -> i32 {
// Schreibe hier den Code
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code