Menu
Coddy logo textTech

Shadowing Teil 2

Teil des Abschnitts Fundamentals der Rust-Journey von Coddy — Lektion 48 von 75.

Wenn Sie eine Variable in Rust überschatten (shadowing), ist die neue Variable völlig unabhängig von der ursprünglichen und benötigt ihre eigene Deklaration der Veränderbarkeit (mutability). Das Überschatten erbt nicht die Veränderbarkeit der ursprünglichen Variable.

let mut mut_val = 7;
// Die ursprüngliche Variable ist veränderbar
{ 
    let mut_val = 8;
    // Dies ist eine neue Variable, die das äußere mut_val überschattet
      
    mut_val = 50;
    // Ein Fehler ist aufgetreten, weil
    // mut_val nicht veränderbar ist
}
// Hier ist es okay 
// mut_val ist in diesem Bereich nicht eingefroren
mut_val = 3;

Um dies zu beheben, können wir mut im inneren Gültigkeitsbereich hinzufügen:

{
	let mut mut_val = 8;
	mut_val = 50;
}
challenge icon

Aufgabe

Anfänger

Korrigiere den angegebenen Code, damit er ohne Fehler ausgeführt wird.

Spickzettel

Beim Shadowing einer Variablen in Rust ist die neue Variable völlig unabhängig und benötigt eine eigene Deklaration der Veränderbarkeit (Mutability). Shadowing erbt die Veränderbarkeit nicht von der ursprünglichen Variablen.

let mut mut_val = 7;
// Die ursprüngliche Variable ist veränderbar
{ 
    let mut_val = 8;
    // Dies überschattet das äußere mut_val, ist aber unveränderbar
      
    mut_val = 50;
    // Fehler: mut_val ist in diesem Gültigkeitsbereich nicht veränderbar
}

Um dies zu beheben, fügen Sie mut zur überschattenden Variablen hinzu:

{
    let mut mut_val = 8;
    mut_val = 50; // Jetzt funktioniert dies
}

Probier es selbst

fn main() {
    // Korrigiere diesen Code, damit er funktioniert
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // Dies wird einen Fehler verursachen
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
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 Fundamentals