Veränderliche Iteration
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 12 von 66.
Manchmal musst du mehr tun, als nur Vektorelemente zu lesen – du musst sie ändern. Während die vorherige Lektion gezeigt hat, wie man iteriert und Werte liest, lernst du in dieser Lektion, wie du die Elemente während der Iteration mithilfe von veränderlichen Referenzen änderst.
Um Elemente während der Iteration zu ändern, musst du in deiner for-Schleife &mut anstelle von & verwenden:
let mut numbers = vec![1, 2, 3, 4];
for number in &mut numbers {
*number = *number * 2;
}Das &mut numbers erstellt eine veränderbare Referenz auf den Vektor, und jede Iteration gibt dir eine veränderbare Referenz auf ein einzelnes Element. Der Operator * (als Dereferenzierungsoperator bezeichnet) wird verwendet, um auf den tatsächlichen Wert zuzugreifen und ihn zu ändern, auf den die Referenz zeigt.
Dieses Muster ist unglaublich nützlich, um Daten direkt zu transformieren. Anstatt einen neuen Vektor mit geänderten Werten zu erstellen, kannst du den vorhandenen effizient aktualisieren. Der Vektor muss dafür als mut deklariert werden, da du seinen Inhalt änderst.
Nach der obigen Schleife würde numbers [2, 4, 6, 8] enthalten – jeder ursprüngliche Wert wurde an Ort und Stelle verdoppelt.
Aufgabe
EinfachSchreibe eine Funktion add_ten_to_all, die einen veränderlichen Vektor numbers entgegennimmt, 10 zu jedem Element direkt hinzufügt und anschließend den modifizierten Vektor zurückgibt.
Verwende eine veränderliche Iteration mit &mut, um jedes Element direkt zu ändern. Denke daran, den Dereferenzierungsoperator * zu verwenden, um auf die tatsächlichen Werte zuzugreifen und sie zu ändern.
Parameter:
numbers(Vec<i32>): Ein veränderlicher Vektor von Ganzzahlen, der geändert werden soll
Rückgabewert: Der modifizierte Vektor, zu dessen jedem Element 10 addiert wurde (Vec<i32>)
Probier es selbst
fn add_ten_to_all(mut numbers: Vec<i32>) -> Vec<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 Logik & Kontrollfluss
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Übe selbstständig: Online-Rust-Compiler