Anuncios

Bienvenidos sean a este post, hoy hablaremos sobre otra variedad de colecciones.

Anuncios

Como dijimos un tuple no deja de ser otro tipo de coleccion como son array o vector, para poder definirlos podemos hacerlo de dos maneras:

let tup = (3, "foo");
let tup: (i32, &str) = (3, "foo");
Anuncios

El primero es el mas practico de utilizar dado que solamente le pasamos la informacion y el lenguaje se encarga de asignar los tipos en base a la informacion recibida, en cambio en el segundo definimos que tipos recibira y luego le pasamos los valores respetando el mismo orden, esto tambien podemos hacerlo entre tuples, por ejemplo veamos el siguiente caso:

let mut cambiar = (1.1f32, 1);
let aesto = (3.14f32, 6);
cambiar = aesto;
Anuncios

En este caso tenemos dos tuples el primero mutable con un valor de tipo float y otro int, el segundo inmutable con otros valores en el mismo orden, al final simplemente pasando un tuple al otro funciona perfectamente pero el siguiente caso no funcionaria:

let mut cambiar = (1.1f32, 1);
let aesto = (6, 3.14f32);
cambiar = aesto;
Anuncios

Porque como dijimos antes siempre debemos respetar el orden tanto como si declaramos los tipos de la misma como si lo reemplazaramos.

Anuncios

Cuando hablamos de array habiamos dicho que para recuperar una posicion del array simplemente debiamos hacer lo siguiente:

let t = array[pos];
Anuncios

Donde pos es el numero de la posicion que queremos recuperar, para los tuples se hace de una forma diferente:

let t = tuple.pos;
Anuncios

Donde pos tambien representa a la posicion del tuple que queremos recuperar para asignar a una variable, por ejemplo:

let prueba = (1, 4f32, 1i32, 3.14f32);
let t = tuple.2;
Anuncios

Recuerden que las posiciones siempre comienzan desde cero y terminan en el total de elementos menos uno, n-1, pero tambien podemos usar una «clave» para poder recuperar estos valores pero para ello debemos hacer un par de modificaciones, para entenderlo un poco mejor vamos a crear un nuevo proyecto.

Anuncios

Primero creamos el proyecto bajo el nombre de tuplas, una vez creado vamos al archivo main.rs y modificaremos el codigo generado por el siguiente:

main.rs

fn main() {
	let (uno, dos, tres) = (1, 2, 3);

	println!("Uno = {}", uno);
	println!("Dos = {}", dos);
	println!("Tres = {}", tres);
}
Anuncios

Observen que al momento de definir la variable en realidad lo pasamos como un tuple, en este caso pasaremos tres nombres para identificarlos, del otro lado pasaremos tres valores los cuales se asociaran automaticamente a los nombres definidos anteriormente en el mismo orden que son pasados, por ultimo mostraremos los tres valores en base a las variables que estan asociadas del tuple de definicion, compilemos y veamos su salida:

tinchicus@dbn001vrt:~/lenguajes/rust/tupla$ cargo run 
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running `target/debug/tupla`
Uno = 1
Dos = 2
Tres = 3
tinchicus@dbn001vrt:~/lenguajes/rust/tupla$
Anuncios

Observen como nos devolvio perfectamente los valores en base a la asociacion que hicimos anteriormente, con esto hemos cubierto a tuple.

Anuncios

En resumen, hoy hemos visto tuple, como es, como trabaja, como se puede definir, en sus varias formas, tambien hemos visto como se puede pasar de un tuple a otro y como no, tambien hemos visto un pequeño ejemplo para ver como se puede utilizar para asociarlo con un valor, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50