Múltiples valores de retorno
Parte de la sección Fundamentals del Journey de Rust de Coddy — lección 52 de 75.
En Rust, una función puede devolver múltiples valores usando una tupla como tipo de retorno. Una tupla es un grupo de diferentes valores agrupados en una sola unidad.
Por ejemplo:
fn get_coordinates() -> (i32, i32) {
let x = 10;
let y = 20;
(x, y) // Devuelve una tupla
}Y así es como se llama a la función:
let (x, y) = get_coordinates();
// Desestructurar la tupla
// en variables separadas
println!("{}, {}", x, y);Puedes devolver tantos valores como necesites añadiendo más elementos a la tupla. Por ejemplo:
fn get_details() -> (String, i32, f64) {
let name = String::from("Alice");
let age = 30;
let score = 95.5;
(name, age, score)
// Return a tuple with three values
}Y así es como se llama a la función:
let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);Desafío
FácilCrea una función llamada get_user_info que devuelva una tupla que contenga el nombre, la edad y la dirección de correo electrónico de un usuario. La función debe tener la siguiente firma:
fn get_user_info() -> (String, i32, String)Dentro de la función, crea las siguientes variables:
name: unaStringinicializada en "Bob"age: uni32inicializado en 25email: unaStringinicializada en "bob@example.com"
Devuelve estos tres valores como una tupla.
En la función main, llama a get_user_info y desestructura la tupla devuelta en variables separadas llamadas name, age y email. Luego, imprime estos valores en la consola usando println! en el siguiente formato:
Name: [name], Age: [age], Email: [email]Hoja de referencia
Las funciones pueden devolver múltiples valores utilizando tuplas como tipo de retorno:
fn get_coordinates() -> (i32, i32) {
let x = 10;
let y = 20;
(x, y) // Devolver una tupla
}Llama a la función y desestructura la tupla en variables separadas:
let (x, y) = get_coordinates();
println!("{}, {}", x, y);Puedes devolver múltiples valores de diferentes tipos:
fn get_details() -> (String, i32, f64) {
let name = String::from("Alice");
let age = 30;
let score = 95.5;
(name, age, score)
}let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);Pruébalo tú mismo
fn get_user_info() -> (String, i32, String) {
// Crea las variables de nombre, edad y correo electrónico aquí
// Devuelve la tupla
}
fn main() {
// Llama a get_user_info y desestructura la tupla devuelta
// Imprime los valores
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentals
4Operadores Parte 1
Operadores aritméticosOperador de móduloAtajos aritméticosOperadores de comparaciónComparación de strings5Operadores Parte 2
Operadores lógicos Parte 1Operadores lógicos Parte 2Repaso - Lógica simpleOperadores lógicos Parte 311Funciones
Declaración de funcionesParámetros y argumentosValores de retornoMúltiples valores de retornoRepaso: Función SigmaRepaso: Función de validación3Variables Parte 2
Declaración de tiposConvenciones de nomenclaturaInferencia de tiposResumen - Inicializar variablesConversión de tipos9Bucles
For sobre seriesBucle WhileBreakContinueBucle anidadoEtiquetas de bucleBucle infinitoResumen - Entrada dinámica