es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo hacer coincidir basándome en una variable dinámica?

¿Es posible hacer coincidir una variable dinámica en lugar de solo literales?

En este código, el primer match debería hacer lo mismo que el match con comentarios (number[0] siendo 0 y number[1] siendo 1):

const NUMBERS: [i8; 2] = [0, 1];

fn test() {
    let current = 5;

    let string = match current % 2 {
        NUMBERS[0] => "even", // Esto no funciona
        NUMBERS[1] => "odd",  // Esto no funciona
        _ => unreachable!(),
    };

    // let string = match current % 2 {
    //     0 => "even",
    //     1 => "odd",
    //     _ => unreachable!()
    // };
}
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible hacer coincidir una variable dinámica en lugar de solo literales en Rust. En el código dado, la declaración match intenta hacer coincidir una variable dinámica current % 2 con los valores en el array NUMBERS. Sin embargo, esto no es posible ya que la declaración match solo permite el uso de literales para la coincidencia de patrones. Para hacer coincidir una variable dinámica, puedes usar la declaración match con una unión de variables, así:

    let string = match current % 2 {
        num if num == NUMBERS[0] => "par",
        num if num == NUMBERS[1] => "impar",
        _ => unreachable!(),
    };
    

    En este caso, el valor de current % 2 se hace coincidir con la variable num, la cual se compara con los valores en el array NUMBERS utilizando el operador ==.

Comments are closed.