sábado, 6 de abril de 2019

Creando videojuegos en Rust lang (Parte 13)

Programa 7. "pre_hello_ggez7" El equivalente a un "switch" en Rust: "match"
Si queremos dirigir el flujo de nuestro programa usando "enums" lo podemos hacer usando "match". En Rust "match" es muy parecido a un "switch" en C. Simplemente enlistas todos los casos a manejar y pones "=>" y una coma "," al final de ese caso. De hecho como los enums pueden ser "structs" o "tuple structs" podemos asignaros a variables ("tuple structs") o usar los nombres directamente ("structs").

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
enum Direccion {
    Avanzar,
    Detenido(char),
    Click { x: i64, y: i64 }
}

fn main() {
    let direccion_jugador1 = Direccion::Avanzar;
    match direccion_jugador1 {
        Direccion::Avanzar => println!("¡Avanzar!"),
        Direccion::Detenido(input_char) => println!("¡{}!", input_char),
        Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y)
    }
    let direccion_jugador2 = Direccion::Click {x: 6, y: 3};
    match direccion_jugador2 {
        Direccion::Avanzar => println!("¡Avanzar!"),
        Direccion::Detenido(input_char) => println!("¡{}!", input_char),
        Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y)
    }
    let direccion_jugador3 = Direccion::Detenido('p');
    match direccion_jugador3 {
        Direccion::Avanzar => println!("¡Avanzar!"),
        Direccion::Detenido(input_char) => println!("¡{}!", input_char),
        Direccion::Click { x, y } => println!("¡x={} y y={}!", x, y)
    }
    println!("¡Fin del juego!");
}

El resultado de correr el código es el siguiente:
También hay funciones más avanzadas de "match". Podemos usar "|" para apuntar múltiples condiciones a un sólo grupo de código "a | b | c =>", así podemos replicar el comportamiento de "switch" en C/C++. También podemos usar "_" para manejar el resto de los casos similar a "default" en C/C++. Es decir podemos usar " _ => " para manejar los casos que no caen en los mencionados directamente.

Navegación:
Primera parte
Siguiente parte
Parte anterior

Fuente:

No hay comentarios.:

Publicar un comentario