5.2 Inference

타입 추측 엔진은 매우 똑똑하다. 이는 초기화 때 r-value를 참고하는 것 이상이다. 그 뿐 아니라 타입 추측 이후에 변수가 어떻게 사용되는지도 참고한다. 여기 타입 추측의 고급 예제가 있다:

fn main() {
    // 주해가 달려, 컴파일러는 `elem`이 u8 타입임을 알았다.
    let elem = 5u8;

    // 비어있는 벡터를 생성한다. (확장 가능한 배열).
    let mut vec = Vec::new();
    // 이 시점에 컴파일러는 벡터의 정확한 타입을 알지 못하고  
    // 그저 어떤 것들의 벡터라고만 알고 있다. (`Vec<_>`).

    // `elem`를 벡터에 추가한다.
    vec.push(elem);
    // 아하! 이제 컴파일러는 `vec` 가 `u8`s의 벡터임을 알았다. (`Vec<u8>`)
    // TODO ^ 해당 줄  `vec.push(elem)` 를 주석처리 해보세요.

    println!("{:?}", vec);
}

변수의 타입 주해가 필요하지 않을 때, 컴파일러는 행복하고 프로그래머도 그렇다!

results matching ""

    No results matching ""