Menu
Coddy logo textTech

Veränderliche Iteration

Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 12 von 66.

Manchmal müssen Sie mehr tun, als nur Vektorelemente zu lesen – Sie müssen sie ändern. Während die vorherige Lektion gezeigt hat, wie man über Werte iteriert und diese liest, lehrt diese Lektion, wie man die Elemente während der Iteration mithilfe von veränderlichen Referenzen ändert.

Um Elemente während der Iteration zu ändern, müssen Sie &mut anstelle von & in Ihrer for-Schleife 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 Ihnen eine veränderbare Referenz auf ein einzelnes Element. Der *-Operator (Dereferenzierungsoperator genannt) 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 vor Ort (in place) zu transformieren. Anstatt einen neuen Vektor mit geänderten Werten zu erstellen, können Sie den bestehenden effizient aktualisieren. Der Vektor muss als mut deklariert werden, damit dies funktioniert, da Sie seinen Inhalt ändern.

Nach der obigen Schleife würde numbers [2, 4, 6, 8] enthalten – jeder ursprüngliche Wert wurde an Ort und Stelle verdoppelt.

challenge icon

Aufgabe

Einfach

Schreiben Sie eine Funktion add_ten_to_all, die einen veränderbaren Vektor numbers entgegennimmt, zu jedem Element 10 an Ort und Stelle addiert und dann den modifizierten Vektor zurückgibt.

Verwenden Sie die veränderbare Iteration mit &mut, um jedes Element direkt zu modifizieren. Denken Sie daran, den Dereferenzierungsoperator * zu verwenden, um auf die tatsächlichen Werte zuzugreifen und diese zu ändern.

Parameter:

  • numbers (Vec<i32>): Ein veränderbarer Vektor von Ganzzahlen, der modifiziert werden soll

Rückgabewert: Der modifizierte Vektor, bei dem zu jedem Element 10 addiert wurde (Vec<i32>)

Spickzettel

Um Vektorelemente während der Iteration zu ändern, verwenden Sie veränderbare Referenzen mit &mut:

let mut numbers = vec![1, 2, 3, 4];

for number in &mut numbers {
    *number = *number * 2;
}

Wichtige Punkte:

  • &mut numbers erzeugt eine veränderbare Referenz auf den Vektor
  • Jede Iteration stellt eine veränderbare Referenz auf ein einzelnes Element bereit
  • Der * Operator (Dereferenzierungsoperator) greift auf den tatsächlichen Wert zu und ändert diesen
  • Der Vektor muss als mut deklariert werden, um Änderungen zu ermöglichen

Dieses Muster ermöglicht es Ihnen, Daten effizient direkt vor Ort zu transformieren, ohne einen neuen Vektor zu erstellen.

Probier es selbst

fn add_ten_to_all(numbers: Vec<i32>) -> Vec<i32> {
    // Schreibe hier den Code
}
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 Logic & Flow