섀도잉 파트 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;
}챌린지
초급주어진 코드가 오류 없이 실행되도록 수정하세요.
치트 시트
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);
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.