Menu
Coddy logo textTech

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".

challenge icon

Défi

Facile

Vous 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
}
quiz iconTestez-vous

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