Menu
Coddy logo textTech

Múltiplos Valores de Retorno

Parte da seção Fundamentals do Journey de Rust da Coddy — lição 52 de 75.

Em Rust, uma função pode retornar múltiplos valores usando uma tupla como o tipo de retorno. Uma tupla é um grupo de diferentes valores agrupados em uma única unidade.

Por exemplo:

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // Retorna uma tupla
}

E é assim que se chama a função:

let (x, y) = get_coordinates();
// Desestrutura a tupla
// em variáveis separadas

println!("{}, {}", x, y);

Você pode retornar quantos valores precisar adicionando mais elementos à tupla. Por exemplo:

fn get_details() -> (String, i32, f64) {
    let name = String::from("Alice");
    let age = 30;
    let score = 95.5;
    (name, age, score)
    // Retorna uma tupla com três valores
}

E é assim que se chama a função:

let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);
challenge icon

Desafio

Fácil

Crie uma função chamada get_user_info que retorna uma tupla contendo o nome, a idade e o endereço de e-mail de um usuário. A função deve ter a seguinte assinatura:

fn get_user_info() -> (String, i32, String)

Dentro da função, crie as seguintes variáveis:

  • name: uma String inicializada como "Bob"
  • age: um i32 inicializado como 25
  • email: uma String inicializada como "bob@example.com"

Retorne esses três valores como uma tupla.

Na função main, chame get_user_info e desestruture a tupla retornada em variáveis separadas chamadas name, age e email. Em seguida, imprima esses valores no console usando println! no seguinte formato:

Name: [name], Age: [age], Email: [email]

Folha de consulta

As funções podem retornar múltiplos valores usando tuplas como o tipo de retorno:

fn get_coordinates() -> (i32, i32) {
    let x = 10;
    let y = 20;
    (x, y) // Retorna uma tupla
}

Chame a função e desestruture a tupla em variáveis separadas:

let (x, y) = get_coordinates();
println!("{}, {}", x, y);

Você pode retornar múltiplos valores de tipos diferentes:

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

Experimente você mesmo

fn get_user_info() -> (String, i32, String) {
    // Crie as variáveis de nome, idade e e-mail aqui
    
    
    // Retorne a tupla
    
}

fn main() {
    // Chame get_user_info e desestruture a tupla retornada
    
    
    // Imprima os valores
    
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentals