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 se hace la multivinculación o los patrones en las expresiones de coincidencia?

¿Hay alguna forma de vincular el mismo nombre con un conjunto de coincidencias o correspondencias?

Por ejemplo, en el siguiente código, me gustaría que n sea cualquiera de las correspondencias, 1, 2 o 3.

fn main() {
    match 2 {
        n @ 1 | 2 | 3 => {
            println!("{} ", n);
        }
        _ => {},
    }
}

Playground

Muestra el siguiente error:

error[E0408]: la variable `n` no está vinculada en todos los patrones
  --> src/main.rs:3:17
   |
3  |         n @ 1 | 2 | 3 => {
   |         -      ^   ^ el patrón no vincula a `n`
   |         |      |
   |         |      el patrón no vincula a `n`
   |         variable no está en todos los patrones
Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, puedes vincular un grupo de coincidencias o patrones al mismo nombre utilizando el operador @. En el código proporcionado, la variable n está vinculada con el operador @ a cualquiera de las coincidencias o patrones 1, 2 o 3. Sin embargo, el compilador muestra un error porque la variable n no está vinculada en todos los patrones. Para corregir este error, puedes agregar en los patrones que no coinciden una vinculación de espacio reservado _. Aquí está el código corregido:

    fn main() {
        match 2 {
            n @ 1 | n @ 2 | n @ 3 => {
                println!("{}", n);
            }
            _ => {},
        }
    }
    

    [Playground][1]

    Este código imprime 2. Si cambias el valor de entrada a 1 o 3, seguirá funcionando e imprimirá el valor correspondiente.

Comments are closed.