Valeurs de retour multiples
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 52 sur 75.
En Rust, une fonction peut retourner plusieurs valeurs en utilisant un tuple comme type de retour. Un tuple est un groupe de différentes valeurs regroupées en une seule unité.
Par exemple :
fn get_coordinates() -> (i32, i32) {
let x = 10;
let y = 20;
(x, y) // Retourne un tuple
}Et voici comment appeler la fonction :
let (x, y) = get_coordinates();
// Déstructurer le tuple
// en variables distinctes
println!("{}, {}", x, y);Vous pouvez retourner autant de valeurs que nécessaire en ajoutant plus d'éléments au tuple. Par exemple :
fn get_details() -> (String, i32, f64) {
let name = String::from("Alice");
let age = 30;
let score = 95.5;
(name, age, score)
// Retourne un tuple avec trois valeurs
}Et voici comment appeler la fonction :
let (name, age, score) = get_details();
println!("{}, {}, {}", name, age, score);Défi
FacileCréez une fonction nommée get_user_info qui retourne un tuple contenant le nom, l'âge et l'adresse e-mail d'un utilisateur. La fonction doit avoir la signature suivante :
fn get_user_info() -> (String, i32, String)À l'intérieur de la fonction, créez les variables suivantes :
name: uneStringinitialisée à "Bob"age: uni32initialisé à 25email: uneStringinitialisée à "bob@example.com"
Retournez ces trois valeurs sous forme de tuple.
Dans la fonction main, appelez get_user_info et déstructurez le tuple retourné dans des variables distinctes nommées name, age et email. Ensuite, affichez ces valeurs dans la console en utilisant println! au format suivant :
Name: [name], Age: [age], Email: [email]Aide-mémoire
Les fonctions peuvent retourner plusieurs valeurs en utilisant des tuples comme type de retour :
fn get_coordinates() -> (i32, i32) {
let x = 10;
let y = 20;
(x, y) // Return a tuple
}Appelez la fonction et déstructurez le tuple en variables distinctes :
let (x, y) = get_coordinates();
println!("{}, {}", x, y);Vous pouvez retourner plusieurs valeurs de types différents :
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);Essayez vous-même
fn get_user_info() -> (String, i32, String) {
// Créez les variables de nom, d'âge et d'e-mail ici
// Retourner le tuple
}
fn main() {
// Appeler get_user_info et déstructurer le tuple retourné
// Afficher les valeurs
}Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fundamentals
4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloRaccourcis arithmétiquesOpérateurs de comparaisonComparaison de chaînes7Entrées/Sorties de base
Afficher dans la consoleLire la saisie utilisateurRécapitulatif - Jusqu'à 120Récapitulatif - Vrai ou Faux5Opérateurs, partie 2
Opérateurs logiques, partie 1Opérateurs logiques, partie 2Récapitulatif - Logique simpleOpérateurs logiques, partie 311Fonctions
Déclaration de fonctionsParamètres et argumentsValeurs de retourValeurs de retour multiplesRécapitulatif - Fonction SigmaRécapitulatif - Fonction de validation3Variables - Partie 2
Déclaration de typeConventions de nommageInférence de typeRécapitulatif - Initialiser des variablesConversion de type9Boucles
Boucle For sur une sérieBoucle WhileBreakContinueBoucles imbriquéesÉtiquettes de boucleBoucle infinieRécapitulatif - Entrée dynamique12Bases des tableaux
Déclaration de tableauxTableau comme paramètreAccès aux élémentsModification de tableauxRécapitulatif - Affichage formaté d'un tableau15Opérations sur les chaînes
Méthodes de chaînesMacro format!Conversion de chaînesRécapitulatif - Format