Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

배열/슬라이스

튜플과 마찬가지로, 배열과 슬라이스도 다음과 같은 방식으로 구조 분해될 수 있습니다:

fn main() {
    // 배열의 값을 변경하거나 슬라이스로 만들어 보세요!
    let array = [1, -2, 6];

    match array {
        // 두 번째와 세 번째 요소를 각각의 변수에 바인딩합니다
        [0, second, third] =>
            println!("array[0] = 0, array[1] = {}, array[2] = {}", second, third),

        // 단일 값은 _로 무시할 수 있습니다
        [1, _, third] => println!(
            "array[0] = 1, array[2] = {} 이고 array[1]은 무시되었습니다",
            third
        ),

        // 일부만 바인딩하고 나머지는 무시할 수도 있습니다
        [-1, second, ..] => println!(
            "array[0] = -1, array[1] = {} 이고 다른 모든 것들은 무시되었습니다",
            second
        ),
        // 아래 코드는 컴파일되지 않습니다
        // [-1, second] => ...

        // 또는 다른 배열/슬라이스에 저장할 수도 있습니다 (타입은 매칭되는 값의 타입에 따라 달라집니다)
        [3, second, tail @ ..] => println!(
            "array[0] = 3, array[1] = {} 이고 다른 요소들은 {:?}입니다",
            second, tail
        ),

        // 이러한 패턴들을 결합하여, 예를 들어 첫 번째와 마지막 값을 바인딩하고 나머지는 하나의 배열에 저장할 수 있습니다
        [first, middle @ .., last] => println!(
            "array[0] = {}, middle = {:?}, array[2] = {}",
            first, middle, last
        ),
    }
}

참고:

배열과 슬라이스 그리고 @ 기호를 사용한 바인딩