Bereiche abgleichen
Teil des Abschnitts Logic & Flow der Rust-Journey von Coddy — Lektion 3 von 66.
Wenn Sie prüfen müssen, ob ein Wert in einen bestimmten Zahlenbereich fällt, wäre es mühsam, für jeden einzelnen Wert separate Zweige zu schreiben. Der match-Ausdruck von Rust unterstützt Bereichsmuster, mit denen Sie gegen eine kontinuierliche Spanne von Werten unter Verwendung der start..=end-Syntax prüfen können.
Der ..= Operator erzeugt einen inklusiven Bereich, was bedeutet, dass sowohl der Start- als auch der Endwert in der Übereinstimmung enthalten sind. So kannst du Bereiche in Match-Armen verwenden:
let temp = 20;
match temp {
30..=50 => println!("Hot"),
10..=29 => println!("Warm"),
_ => println!("Cold"),
}In diesem Beispiel würde eine Temperatur von 20 dem Bereich 10..=29 entsprechen und "Warm" ausgeben. Der Bereich 30..=50 beinhaltet sowohl 30 als auch 50, sodass Temperaturen von genau 30 oder 50 beide zu "Hot" führen würden.
Aufgabe
EinfachSie erhalten ein Alter als Eingabe. Lesen Sie die Eingabe ein, konvertieren Sie sie in eine Ganzzahl und verwenden Sie einen match-Ausdruck mit Bereichsmustern (range patterns), um die entsprechende Alterskategorie auszugeben.
Anforderungen:
- Wenn das Alter
0..=12ist, geben Sie"Child"aus - Wenn das Alter
13..=19ist, geben Sie"Teenager"aus - Wenn das Alter
20..=64ist, geben Sie"Adult"aus - Wenn das Alter
65..=120ist, geben Sie"Senior"aus - Für jedes andere Alter geben Sie
"Invalid age"aus
Eingabe: Eine einzelne Ganzzahl, die das Alter darstellt
Ausgabe: Geben Sie die Alterskategorie aus: "Child", "Teenager", "Adult", "Senior" oder "Invalid age"
Spickzettel
Bereichsmuster in match-Ausdrücken ermöglichen es Ihnen, gegen eine kontinuierliche Spanne von Werten unter Verwendung der start..=end-Syntax zu prüfen, wobei ..= einen inklusiven Bereich erzeugt (sowohl der Start- als auch der Endwert sind enthalten).
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"),
}In diesem Beispiel entspricht ein Wert von 85 dem Bereich 80..=89 und gibt "Grade: B" aus. Der Bereich 90..=100 schließt sowohl 90 als auch 100 ein.
Probier es selbst
use std::io;
fn main() {
// Eingabe lesen
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: Schreibe deinen Code unten unter Verwendung eines Match-Ausdrucks mit Bereichsmustern
// Das Ergebnis ausgeben
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logic & Flow
1Fortgeschrittener Kontrollfluss
Der 'match'-AusdruckAbgleichen mehrerer WerteBereiche abgleichenDer 'if let'-AusdruckSchleifen als AusdrückeRückblick – Einfacher Befehls-Parser4Daten gruppieren mit Structs
Was ist ein Struct?Übersicht über StructsZugriff auf Struct-FelderVeränderbare StructsStructs als FunktionsparameterTupel-StructsZusammenfassung – Ein Buch-Struct erstellen2Einführung in Vektoren
Was ist ein Vektor?Einen Vektor erstellenElemente mit push hinzufügenZugriff auf Vektor-ElementeÜber einen Vektor iterierenVeränderliche IterationElemente entfernenZusammenfassung – Einfacher Score-Tracker5Schlüssel-Wert-Paare mit Hash Maps
Was ist eine Hash Map?Erstellen einer Hash MapEinfügen von Schlüssel-Wert-PaarenZugreifen auf WerteIterieren über eine Hash MapAktualisieren eines WertesEntfernen eines PaaresZusammenfassung – Wortzähler8Projekt: Einfaches Artikelinventar
Projekt-SetupEinen Artikel hinzufügenLagerbestand prüfenEinen Artikel verkaufenAlles zusammenfügen11Abschluss-Herausforderungen
Wiederholung - Einzigartige ElementeWiederholung - Benutzerprofil-ValidatorWiederholung - Noten-Zusammenfassung3Kommandozeilen-To-Do-Liste
Projekt-SetupEine Aufgabe hinzufügenAlle Aufgaben anzeigenEine Aufgabe entfernenFinaler Code