Introducción
En este laboratorio, exploramos interfaces variádicas, que son interfaces que pueden tomar un número arbitrario de argumentos. Como ejemplo, modificamos la macro calculate! de la sección anterior para que sea variádica, lo que permite evaluar múltiples expresiones a la vez.
Nota: Si el laboratorio no especifica un nombre de archivo, puede usar cualquier nombre de archivo que desee. Por ejemplo, puede usar
main.rs, compilar y ejecutarlo conrustc main.rs &&./main.
Interfaces Variádicas
Una interfaz variádica toma un número arbitrario de argumentos. Por ejemplo, println! puede tomar un número arbitrario de argumentos, según lo determinado por la cadena de formato.
Podemos extender la macro calculate! de la sección anterior para que sea variádica:
macro_rules! calculate {
// El patrón para un solo `eval`
(eval $e:expr) => {
{
let val: usize = $e; // Forzar que los tipos sean enteros
println!("{} = {}", stringify!{$e}, val);
}
};
// Descomponer múltiples `eval`s de forma recursiva
(eval $e:expr, $(eval $es:expr),+) => {{
calculate! { eval $e }
calculate! { $(eval $es),+ }
}};
}
fn main() {
calculate! { // ¡Mira, mamá! `calculate!` variádica
eval 1 + 2,
eval 3 + 4,
eval (2 * 3) + 1
}
}
Salida:
1 + 2 = 3
3 + 4 = 7
(2 * 3) + 1 = 7
Resumen
¡Felicitaciones! Has completado el laboratorio de Interfaces Variádicas. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.