L'expression 'match'
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 1 sur 66.
L'expression match est l'outil de filtrage par motif (pattern matching) puissant de Rust qui vous permet de comparer une valeur à différents motifs et d'exécuter du code en fonction du motif qui correspond. Considérez-le comme une version plus avancée des instructions if qui peut gérer plusieurs conditions de manière élégante.
Voici la syntaxe de base d'une expression match :
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Chaque ligne à l'intérieur du match est appelée une « branche ». Le => sépare le motif du code qui s'exécute lorsque ce motif correspond. Le tiret bas _ est un motif générique spécial qui correspond à n'importe quoi — c'est comme un « fourre-tout » pour toute valeur qui ne correspond pas aux autres motifs.
Voici un exemple simple qui vérifie un nombre :
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}En Rust, les expressions match doivent être exhaustives, ce qui signifie qu'elles doivent traiter chaque valeur possible. C'est pourquoi le caractère générique _ est si important - il garantit que vous avez couvert tous les cas qui n'ont pas été explicitement mis en correspondance.
Défi
FacileÉcrivez une fonction describe_number qui prend num et renvoie une description sous forme de chaîne de caractères basée sur la valeur du nombre.
Utilisez une expression match pour renvoyer différentes descriptions pour différents nombres.
Conditions :
- Si
numest0, renvoyez"zero" - Si
numest1, renvoyez"one" - Si
numest2, renvoyez"two" - Si
numest3, renvoyez"three" - Pour tout autre nombre, renvoyez
"many"
Paramètres :
num(i32) : Le nombre à décrire
Renvoie : Une description du nombre sous forme de chaîne de caractères (String)
Aide-mémoire
L'expression match compare une valeur à différents motifs et exécute le code en fonction du motif qui correspond :
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Chaque ligne à l'intérieur du match est appelée une « branche » (arm). Le => sépare le motif du code qui s'exécute lorsque ce motif correspond.
Exemple :
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}L'underscore _ est un motif générique (wildcard) qui correspond à tout ce qui n'est pas couvert par les autres motifs. Les expressions match doivent être exhaustives — elles doivent gérer chaque valeur possible.
Essayez vous-même
fn describe_number(num: i32) -> String {
// Écrire le code ici
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Logic & Flow
1Structures de contrôle avancées
L'expression 'match'Filtrage de plusieurs valeursFiltrage d'intervallesL'expression 'if let'Les boucles en tant qu'expressionsRécapitulatif - Analyseur de commandes simple4Regrouper des données avec les structures
Qu'est-ce qu'une structure ?Aperçu des structuresAccéder aux champs d'une structureStructures mutablesLes structures comme paramètres de fonctionStructures tupleRécapitulatif - Créer une structure Book2Introduction aux vecteurs
Qu'est-ce qu'un vecteur ?Créer un vecteurAjouter des éléments avec pushAccéder aux éléments d'un vecteurItérer sur un vecteurItération mutableSupprimer des élémentsRécapitulatif - Suivi de score basique5Paires clé-valeur avec les Hash Maps
Qu'est-ce qu'une Hash Map ?Créer une Hash MapInsérer des paires clé-valeurAccéder aux valeursParcourir une Hash MapMettre à jour une valeurSupprimer une paireRécapitulatif - Compteur de mots8Projet : Inventaire d'articles simple
Configuration du projetAjouter un articleVérifier le stockVendre un articleAssembler le tout3Liste de tâches en ligne de commande
Configuration du projetAjouter une tâcheAfficher toutes les tâchesSupprimer une tâcheCode final