Interfaces Variádicas en el Programa de Rust

Beginner

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

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 con rustc 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.