4.2 Scope and shadowing

변수 바인딩은 범위를 갖고, 유지되는 범위는 블록(block)으로 제약된다. 블록은 {}괄호로 둘러쌓여 있는 문장의 모음이다. 또한, 변수 shadowing도 허용된다.

fn main() {
    // 이 바인딩은 메인 함수 내에 유효하다. 
    let long_lived_binding = 1;

    // 이는 블럭으로 main 함수보다 작은 범위를 갖는다.
    {
        // 이 바인딩은 오직 이 블록 안에서만 존재한다.
        let short_lived_binding = 2;

        println!("inner short: {}", short_lived_binding);

        // 이 바인딩은 외부 변수의 *shadows*
        let long_lived_binding = 5_f32;

        println!("inner long: {}", long_lived_binding);
    }
    // 블럭 종료.

    // 에러! `short_lived_binding` 이 범위에는 존재치 않음.
    println!("outer short: {}", short_lived_binding);
    // FIXME ^ 이 줄을 주석 처리 하세요.

    println!("outer long: {}", long_lived_binding);

    // 이 바인딩 또한 이전 바인딩의 *shadows* 
    let long_lived_binding = 'a';

    println!("outer long: {}", long_lived_binding);
}

results matching ""

    No results matching ""