Filtrage de plusieurs valeurs
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 2 sur 66.
Parfois, vous devez faire correspondre plusieurs valeurs différentes qui devraient toutes déclencher le même code. Au lieu d'écrire des branches séparées pour chaque valeur, Rust vous permet de combiner plusieurs motifs dans une seule branche en utilisant l'opérateur | (OU).
Voici comment vous pouvez faire correspondre plusieurs valeurs dans une seule branche :
let month = 12;
match month {
12 | 1 | 2 => println!("Winter"),
3 | 4 | 5 => println!("Spring"),
6 | 7 | 8 => println!("Summer"),
9 | 10 | 11 => println!("Fall"),
_ => println!("Invalid month"),
}L'opérateur | fonctionne comme le « OU » en français — si la valeur correspond à n'importe lequel des motifs séparés par |, cette branche sera exécutée. Cela rend votre code beaucoup plus propre que d'avoir des branches séparées qui font toutes la même chose.
Défi
FacileVous recevrez un numéro de jour (1-7) en entrée, représentant un jour de la semaine. Lisez l'entrée, convertissez-la en un entier, et utilisez une expression match avec l'opérateur | pour afficher s'il s'agit d'un jour de semaine ou du week-end.
Exigences :
- Si le jour est
1,2,3,4, ou5, affichez"Weekday" - Si le jour est
6ou7, affichez"Weekend" - Pour tout autre nombre, affichez
"Invalid day"
Entrée : Un seul entier représentant le numéro du jour
Sortie : Affichez soit "Weekday", "Weekend", ou "Invalid day"
Aide-mémoire
Vous pouvez combiner plusieurs motifs dans une seule branche de correspondance en utilisant l'opérateur | (OU). Si la valeur correspond à l'un des motifs séparés par |, cette branche sera exécutée.
let month = 12;
match month {
12 | 1 | 2 => println!("Winter"),
3 | 4 | 5 => println!("Spring"),
6 | 7 | 8 => println!("Summer"),
9 | 10 | 11 => println!("Fall"),
_ => println!("Invalid month"),
}Essayez vous-même
use std::io;
fn main() {
// Lire l'entrée
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Failed to read line");
let day: i32 = input.trim().parse().expect("Please enter a number");
// TODO: Écrivez votre code ci-dessous en utilisant l'expression match avec l'opérateur |
}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