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 comrustc 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.