6 Tipos de datos compuestos
En la Sección 5.2 ya hemos visto los tipos básicos de datos: reales, enteros, caracteres, booleanos y unitario. Sin embargo, con frecuencia necesitaremos agrupar varios valores para representar una entidad o manejar colecciones de datos. Para ello, Rust define dos tipos de datos compuestos: las tuplas y los arrays.
6.1 Tuplas
Una tupla es una colección ordenada de valores. Sus elementos pueden tener tipos distintos y su longitud no puede cambiar una vez definida. Se escriben entre paréntesis, separados por comas.
fn main() {
let persona = ("Ana", 25, true);
println!("Contenido de la tupla:");
println!("\t{:?}", persona);
println!("Elementos de la tupla:");
println!("\tNombre: {}", persona.0);
println!("\tEdad: {}", persona.1);
println!("\tActivo: {}", persona.2);
}La variable
personacontiene una tupla con tres elementos: una cadena ("Ana"), un entero (25) y un booleano (true).La sentencia
println!("\t{:?}", persona);muestra el contenido completo de la tupla. El especificador
:?indica que el valor debe imprimirse usando su representación de depuración (debug).Los elementos de una tupla se acceden mediante un punto seguido de su posición. El primer elemento es
persona.0, el segundopersona.1y el terceropersona.2.Las últimas sentencias muestran cada elemento por separado:
println!("\tNombre: {}", persona.0); println!("\tEdad: {}", persona.1); println!("\tActivo: {}", persona.2);El especificador
{}indica dónde debe insertarse el valor que aparece como segundo argumento deprintln!.La secuencia
\trepresenta un carácter de tabulación y se utiliza aquí para mejorar la presentación de la salida.
6.2 La tupla vacía
La tupla vacía se escribe () y no contiene ningún elemento. Como vimos en la Sección 5.2.2 también se le llama valor unitario y es de tipo unitario.
fn main() {
let tupla_vacia = ();
println!("{:?}", tupla_vacia);
}Aunque pueda parecer poco útil, la tupla vacía tiene un papel importante en Rust. Por ejemplo, es el valor que devuelven muchas funciones cuya finalidad es realizar una acción y no producir un resultado.
6.3 Arrays
Al igual que una tupla, un array es una colección ordenada de valores cuya longitud no puede cambiar una vez definido. Pero a diferencia de las tuplas, sus elementos han de ser todos del mismo tipo.
Los elementos de un array se escriben entre corchetes, separados por comas. También se usan los corchetes para acceder a los elementos por su índice. Al igual que en C y muchos otros lenguajes, el primer elemento es el 0, el segundo es el 1, etc.
fn main() {
let numeros = [10, 20, 30, 40, 50];
println!("Contenido del array:");
println!("\t{:?}", numeros);
println!("Elementos del array:");
println!("\tPrimero: {}", numeros[0]);
println!("\tSegundo: {}", numeros[1]);
println!("\tTercero: {}", numeros[2]);
}
- La variable
numeroscontiene un array con cinco elementos. Todos ellos son enteros. Si alguno no lo fuera, el compilador mostraría un error. Como en el siguiente ejemplo:
fn main() {
let datos = [10, 20, "azul"]; // ¡ERROR! Los tipos han de ser iguales.
println!("Contenido del array:");
println!("\t{:?}", datos);
}6.4 Comparación entre tuplas y arrays
La Tabla 6.1 resume las similitudes y diferencias entre tuplas y arrays.
| Característica | Tupla | Array |
|---|---|---|
| Longitud fija | Sí | Sí |
| Elementos del mismo tipo | No necesariamente | Sí |
| Delimitadores | Paréntesis () |
Corchetes [] |
| Acceso a elementos | Punto (.0, .1, …) |
Índice ([0], [1], …) |
| Ejemplo | ("TCP", 443, true) |
[10, 20, 30, 40, 50] |
6.5 Resumen
En este capítulo hemos presentado los dos tipos de datos compuestos básicos que proporciona Rust: las tuplas y los arrays.
Las ideas principales son las siguientes:
- Una tupla agrupa un número fijo de valores que pueden ser de tipos diferentes.
- Los elementos de una tupla se acceden mediante su posición, utilizando la notación
.0,.1,.2, etc. - La tupla vacía
()representa el valor unitario y suele utilizarse como valor de retorno de funciones que realizan una acción pero no producen un resultado. - Un array almacena un número fijo de elementos del mismo tipo.
- Los elementos de un array se acceden mediante un índice entre corchetes, comenzando por el índice
0. - Tanto las tuplas como los arrays tienen un tamaño fijo, pero las tuplas permiten mezclar tipos mientras que los arrays no.
En los próximos capítulos estudiaremos nuevos tipos de datos que permiten representar estructuras más complejas y colecciones de tamaño variable.