Rust 프로그래밍의 가변 인터페이스 (Variadic Interfaces)

Beginner

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 임의의 수의 인수를 취할 수 있는 인터페이스인 가변 인터페이스 (variadic interfaces) 를 탐구합니다. 예를 들어, 이전 섹션의 calculate! 매크로를 수정하여 가변 인수를 받도록 하여 여러 표현식을 한 번에 평가할 수 있도록 합니다.

참고: 랩에서 파일 이름을 지정하지 않은 경우 원하는 파일 이름을 사용할 수 있습니다. 예를 들어, main.rs를 사용하고 rustc main.rs && ./main으로 컴파일하고 실행할 수 있습니다.

가변 인터페이스 (Variadic Interfaces)

가변적 (variadic) 인터페이스는 임의의 수의 인수를 받습니다. 예를 들어, println!은 형식 문자열에 의해 결정되는 임의의 수의 인수를 받을 수 있습니다.

이전 섹션에서 calculate! 매크로를 가변적으로 확장할 수 있습니다.

macro_rules! calculate {
    // The pattern for a single `eval`
    (eval $e:expr) => {
        {
            let val: usize = $e; // Force types to be integers
            println!("{} = {}", stringify!{$e}, val);
        }
    };

    // Decompose multiple `eval`s recursively
    (eval $e:expr, $(eval $es:expr),+) => {{
        calculate! { eval $e }
        calculate! { $(eval $es),+ }
    }};
}

fn main() {
    calculate! { // Look ma! Variadic `calculate!`!
        eval 1 + 2,
        eval 3 + 4,
        eval (2 * 3) + 1
    }
}

출력:

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

요약

축하합니다! 가변 인터페이스 (Variadic Interfaces) 랩을 완료했습니다. LabEx 에서 더 많은 랩을 연습하여 실력을 향상시킬 수 있습니다.