Menu
Coddy logo textTech

섀도잉 파트 2

Coddy Rust 여정의 Fundamentals 섹션에 포함된 레슨 — 75개 중 48번째.

Rust에서 변수를 섀도잉(shadowing)할 때, 새 변수는 기존 변수와 완전히 독립적이며 자체적인 가변성(mutability) 선언이 필요합니다. 섀도잉은 기존 변수의 가변성을 상속하지 않습니다.

let mut mut_val = 7;
// 원래 변수는 가변(mutable)입니다.
{ 
    let mut_val = 8;
    // 이것은 외부의 mut_val을 섀도잉(shadowing)하는 새로운 변수입니다.
      
    mut_val = 50;
    // 오류가 발생합니다. 왜냐하면
    // mut_val이 가변(mutable)이 아니기 때문입니다.
}
// 여기서는 괜찮습니다.
// mut_val은 이 스코프에서 고정(frozen)되지 않았습니다.
mut_val = 3;

이를 수정하려면 내부 스코프에 mut를 추가하면 됩니다:

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

챌린지

초급

주어진 코드가 오류 없이 실행되도록 수정하세요.

치트 시트

Rust에서 변수를 섀도잉(shadowing)할 때, 새 변수는 완전히 독립적이며 자체적인 가변성(mutability) 선언이 필요합니다. 섀도잉은 원래 변수로부터 가변성을 상속받지 않습니다.

let mut mut_val = 7;
// 원래 변수는 가변적입니다
{ 
    let mut_val = 8;
    // 이것은 외부의 mut_val을 섀도잉하지만 불변입니다
      
    mut_val = 50;
    // 에러: mut_val은 이 스코프에서 가변적이지 않습니다
}

이를 해결하려면, 섀도잉하는 변수에 mut를 추가하세요:

{
    let mut mut_val = 8;
    mut_val = 50; // 이제 정상적으로 작동합니다
}

직접 해보기

fn main() {
    // 이 코드가 작동하도록 수정하세요
    let number = 42;
    {
        let number = number;
        println!("number is {}", number);
        number = 100;  // 이 부분에서 오류가 발생합니다
        println!("number is {}", number);
    }
    println!("number is {}", number);
}
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

Fundamentals의 모든 레슨