Filtrage d'intervalles
Fait partie de la section Logic & Flow du Journey Rust de Coddy — leçon 3 sur 66.
Lorsque vous devez vérifier si une valeur se situe dans une certaine plage de nombres, écrire des branches séparées pour chaque valeur individuelle serait fastidieux. L'expression match de Rust prend en charge les motifs de plage qui vous permettent de faire correspondre une étendue continue de valeurs en utilisant la syntaxe start..=end.
L'opérateur ..= crée une plage inclusive, ce qui signifie que les valeurs de début et de fin sont toutes deux incluses dans la correspondance. Voici comment vous pouvez utiliser des plages dans les bras de match :
let temp = 20;
match temp {
30..=50 => println!("Hot"),
10..=29 => println!("Warm"),
_ => println!("Cold"),
}Dans cet exemple, une température de 20 correspondrait à la plage 10..=29 et afficherait "Warm". La plage 30..=50 inclut à la fois 30 et 50, de sorte que des températures d'exactement 30 ou 50 donneraient toutes deux "Hot".
Défi
FacileVous recevrez un âge en entrée. Lisez l'entrée, convertissez-la en un entier et utilisez une expression match avec des motifs de plage (range patterns) pour afficher la catégorie d'âge appropriée.
Exigences :
- Si l'âge est
0..=12, affichez"Child" - Si l'âge est
13..=19, affichez"Teenager" - Si l'âge est
20..=64, affichez"Adult" - Si l'âge est
65..=120, affichez"Senior" - Pour tout autre âge, affichez
"Invalid age"
Entrée : Un seul entier représentant l'âge
Sortie : Affichez la catégorie d'âge : "Child", "Teenager", "Adult", "Senior", ou "Invalid age"
Aide-mémoire
Les motifs d'intervalle dans les expressions match vous permettent de faire correspondre une plage continue de valeurs en utilisant la syntaxe start..=end, où ..= crée un intervalle inclusif (les valeurs de début et de fin sont toutes deux incluses).
let score = 85;
match score {
90..=100 => println!("Grade: A"),
80..=89 => println!("Grade: B"),
70..=79 => println!("Grade: C"),
60..=69 => println!("Grade: D"),
_ => println!("Grade: F"),
}Dans cet exemple, un score de 85 correspond à l'intervalle 80..=89 et affiche "Grade: B". L'intervalle 90..=100 inclut à la fois 90 et 100.
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 age: i32 = input.trim().parse().expect("Please enter a valid number");
// TODO: Écrivez votre code ci-dessous en utilisant une expression match avec des motifs de plage
// Afficher le résultat
}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