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

반복

매크로는 인자 목록에서 +를 사용하여 인자가 한 번 이상 반복될 수 있음을 나타내거나, *를 사용하여 인자가 0번 이상 반복될 수 있음을 나타낼 수 있습니다.

다음 예제에서, 매처(matcher)를 $(...),+로 감싸면 콤마로 구분된 하나 이상의 표현식과 매치됩니다. 또한 마지막 케이스에서는 세미콜론이 선택사항임에 유의하세요.

// `find_min!`은 임의 개수의 인자들 중 최솟값을 계산합니다.
macro_rules! find_min {
    // 기본 케이스:
    ($x:expr) => ($x);
    // `$x` 뒤에 최소 하나의 `$y,`가 오는 경우
    ($x:expr, $($y:expr),+) => (
        // 나머지 `$y`들에 대해 `find_min!`을 호출합니다.
        std::cmp::min($x, find_min!($($y),+))
    )
}

fn main() {
    println!("{}", find_min!(1));
    println!("{}", find_min!(1 + 2, 2));
    println!("{}", find_min!(5, 2 * 3, 4));
}