Menu
Coddy logo textTech

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);
challenge icon

Desafío

Fácil

Crea 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: una String inicializada en "Bob"
  • age: un i32 inicializado en 25
  • email: una String inicializada 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
    
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentals