Interfaces Variádicas em Programação Rust

Beginner

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

Introdução

Neste laboratório, exploramos interfaces variádicas, que são interfaces que podem receber um número arbitrário de argumentos. Como exemplo, modificamos a macro calculate! da seção anterior para ser variádica, permitindo que ela avalie múltiplas expressões de uma só vez.

Nota: Se o laboratório não especificar um nome de arquivo, você pode usar qualquer nome de arquivo que desejar. Por exemplo, você pode usar main.rs, compilar e executá-lo com rustc main.rs && ./main.

Interfaces Variádicas

Uma interface variádica recebe um número arbitrário de argumentos. Por exemplo, println! pode receber um número arbitrário de argumentos, conforme determinado pela string de formatação.

Podemos estender nossa macro calculate! da seção anterior para ser variádica:

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
    }
}

Saída:

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

Resumo

Parabéns! Você concluiu o laboratório de Interfaces Variádicas. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.