Instruction Match
Fait partie de la section Fundamentals du Journey Rust de Coddy — leçon 26 sur 75.
L'expression match vous permet de comparer une valeur à une série de motifs et d'exécuter du code en fonction du motif qui correspond.
Voici la structure de base d'une expression match :
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... d'autres motifs
_ => default_expression,
}Le mot-clé match est suivi de la valeur que vous souhaitez tester.
Chaque branche du match se compose d'un motif suivi de => et du code à exécuter.
L'underscore _ est le cas par défaut qui correspond à tout ce qui n'est pas capturé par d'autres motifs.
Voici un exemple :
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... plus de motifs,
_ => "Invalid day",
};Pour plusieurs lignes de code dans une branche, utilisez un bloc :
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... autres cas
_ => "Invalid day",
};Vous pouvez faire correspondre plusieurs motifs en utilisant | :
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Les expressions match en Rust doivent être exhaustives, ce qui signifie qu'elles doivent couvrir toutes les valeurs possibles. Le compilateur vérifiera cela pour vous.
Défi
DébutantCréez un programme qui prend un numéro de mois (1 pour janvier, 2 pour février, etc.) et affiche la saison à laquelle il appartient. Utilisez une instruction match pour la logique.
Les saisons et leurs mois correspondants sont :
- Winter : Décembre (12), Janvier (1), Février (2)
- Spring : Mars (3), Avril (4), Mai (5)
- Summer : Juin (6), Juillet (7), Août (8)
- Autumn : Septembre (9), Octobre (10), Novembre (11)
Aide-mémoire
L'expression match compare une valeur à des motifs et exécute le code en fonction du motif qui correspond :
match variable {
pattern1 => expression1,
pattern2 => expression2,
_ => default_expression,
}Exemple de base :
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
_ => "Invalid day",
};Pour plusieurs lignes de code dans une branche, utilisez un bloc :
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
_ => "Invalid day",
};Faites correspondre plusieurs motifs en utilisant | :
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Les expressions match doivent être exhaustives - elles doivent couvrir toutes les valeurs possibles. Le tiret bas _ est le cas par défaut qui correspond à tout ce qui n'est pas couvert par les autres motifs.
Essayez vous-même
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Écrivez votre code ci-dessous
let season =
// Ne modifiez pas la ligne ci-dessous
println!("status = {}", season);
}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 33Variables - 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