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

가변 인자 인터페이스

가변 인자 인터페이스는 임의의 개수의 인자를 취합니다. 예를 들어, println!은 형식 문자열에 따라 결정되는 임의의 개수의 인자를 취할 수 있습니다.

이전 섹션의 calculate! 매크로를 가변 인자를 취하도록 확장할 수 있습니다:

macro_rules! calculate {
    // 단일 `eval`을 위한 패턴
    (eval $e:expr) => {
        {
            let val: usize = $e; // 타입을 정수로 강제합니다
            println!("{} = {}", stringify!{$e}, val);
        }
    };

    // 여러 개의 `eval`을 재귀적으로 분해합니다
    (eval $e:expr, $(eval $es:expr),+) => {{
        calculate! { eval $e }
        calculate! { $(eval $es),+ }
    }};
}

fn main() {
    calculate! { // 보세요! 가변 인자 `calculate!`입니다!
        eval 1 + 2,
        eval 3 + 4,
        eval (2 * 3) + 1
    }
}

출력:

1 + 2 = 3
3 + 4 = 7
(2 * 3) + 1 = 7