martes, 2 de abril de 2019

Creando videojuegos en Rust lang (parte 8)

Programa 2. "pre_hello_ggez2" Definiendo grupos de datos: "touples"
En Rust un tipo de dato primitivo son conjuntos de datos ordenados o tuplas. Llamados "touples" en inglés. Ejemplos son las coordenadas en el plano cartesiano (x,y) donde tiene sentido agrupar estos números y el orden es importante (2,3) significa "x = 2" y "y = 3".

Si intentamos correr al siguiente código que intenta imprimir tuplas en la línea 3 y en la línea 12 nos marca un error de compilación:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
fn main() {
 let mi_tupla = (1, 4);
 println!("mi_tupla = {}", mi_tupla);
        let (x1, y1) = mi_tupla; // Asignando mi_tupla a variables separadas
 println!("x = {}", x1);
 println!("y = {}", y1);
        let (x2, y2) = (2, 3); // Asignando una tupla a variables
 println!("x = {}", x2);
 println!("y = {}", y2);
 // Una tupla puede contener diferentes tipos de datos
 let mi_tupla2 = (-1i32, 6u32, "hola", '@');
 println!("mi_tupla2 = {}", mi_tupla2);
        println!("¡Fin del ejemplo!");
}



Esto es porque de forma predetermina no hace suposiciones sobre el formato de impresión. Más adelante veremos como implementar un formato de impresión. Por ahora nos limitaremos a mostrar dos opciones que están a veces disponibles. Opción 1 es cambiar "{}" por "{:?}" que le pide al compilador que intente hacer una impresión rápida de debug es decir muy cercano a como se ve el código. Opción 2 es similar a la opción uno, consiste en cambiar "{}" por "{:#?}" que es igual una opción de impresión debug pero más bonita (ejemplo, usa saltos de línea). En este caso son equivalentes, así que si corremos el siguiente código obtenemos lo que esperaríamos:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
fn main() {
 let mi_tupla = (1, 4);
 println!("mi_tupla = {:?}", mi_tupla);
        let (x1, y1) = mi_tupla; // Asignando mi_tupla a variables separadas
 println!("x = {}", x1);
 println!("y = {}", y1);
        let (x2, y2) = (2, 3); // Asignando una tupla a variables
 println!("x = {}", x2);
 println!("y = {}", y2);
 // Una tupla puede contener diferentes tipos de datos
 let mi_tupla2 = (-1i32, 6u32, "hola", '@');
 println!("mi_tupla2 = {:#?}", mi_tupla2);
        println!("¡Fin del ejemplo!");
}

Después de usar "{:?}" o "{:#?}" en lugar de "{}"
Claro que si queremos guardan los datos de las tuplas necesitamos que las variables que usamos sean del mismo tipo que el tipo de dato contenido en esa posición del a tupla.

Navegación:
Primera parte
Siguiente parte
Parte anterior

Fuente (inglés):

No hay comentarios.:

Publicar un comentario