Match-Anweisung
Teil des Abschnitts Fundamentals der Rust-Journey von Coddy — Lektion 26 von 75.
Der match-Ausdruck ermöglicht es Ihnen, einen Wert mit einer Reihe von Mustern zu vergleichen und Code basierend darauf auszuführen, welches Muster übereinstimmt.
Hier ist die Grundstruktur eines match-Ausdrucks:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... weitere Muster
_ => default_expression,
}Das Schlüsselwort match wird gefolgt von dem Wert, den Sie testen möchten.
Jeder Zweig des Match-Ausdrucks besteht aus einem Muster, gefolgt von => und dem auszuführenden Code.
Der Unterstrich _ ist der Standardfall, der auf alles passt, was nicht durch andere Muster abgedeckt wird.
Hier ist ein Beispiel:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... weitere Muster,
_ => "Invalid day",
};Für mehrere Codezeilen in einem Zweig verwenden Sie einen Block:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... andere Fälle
_ => "Invalid day",
};Sie können mehrere Muster mit | abgleichen:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Match-Ausdrücke in Rust müssen erschöpfend sein, was bedeutet, dass sie alle möglichen Werte abdecken müssen. Der Compiler wird dies für Sie prüfen.
Aufgabe
AnfängerErstellen Sie ein Programm, das eine Monatsnummer (1 für Januar, 2 für Februar usw.) entgegennimmt und die Jahreszeit ausgibt, zu der sie gehört. Verwenden Sie eine match-Anweisung für die Logik.
Die Jahreszeiten und ihre entsprechenden Monate sind:
- Winter: Dezember (12), Januar (1), Februar (2)
- Spring: März (3), April (4), Mai (5)
- Summer: Juni (6), Juli (7), August (8)
- Autumn: September (9), Oktober (10), November (11)
Spickzettel
Der match-Ausdruck vergleicht einen Wert mit Mustern und führt Code basierend darauf aus, welches Muster übereinstimmt:
match variable {
pattern1 => expression1,
pattern2 => expression2,
_ => default_expression,
}Grundlegendes Beispiel:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
_ => "Invalid day",
};Für mehrere Codezeilen in einem Zweig verwenden Sie einen Block:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
_ => "Invalid day",
};Mehrere Muster mit | abgleichen:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Match-Ausdrücke müssen erschöpfend sein – sie müssen alle möglichen Werte abdecken. Der Unterstrich _ ist der Standardfall, der auf alles passt, was nicht durch andere Muster abgedeckt wurde.
Probier es selbst
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Schreibe deinen Code unten
let season =
// Ändere die folgende Zeile nicht
println!("status = {}", season);
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Fundamentals
4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorArithmetische AbkürzungenVergleichsoperatorenString-Vergleich7Grundlagen IO
Ausgabe in die KonsoleBenutzereingaben lesenWiederholung - Bis 120Wiederholung - Wahr oder Falsch5Operatoren Teil 2
Logische Operatoren Teil 1Logische Operatoren Teil 2Wiederholung - Einfache LogikLogische Operatoren Teil 311Funktionen
Funktionen deklarierenParameter und ArgumenteRückgabewerteMehrere RückgabewerteWiederholung - Sigma-FunktionWiederholung - Validierungsfunktion14Iterieren über Arrays
Range-LeitfadenErweiterte For-SchleifeBorrowing in SchleifenGängige Array-Operationen3Variablen Teil 2
TypdeklarationNamenskonventionenTypinferenzRückblick - Variablen initialisierenTypumwandlung6Entscheidungsfindung
If-AusdrückeIf-ElseMatch-AnweisungZusammenfassung - If-ElseVerschachteltes If-Else9Schleifen
For-Schleife über SerienWhile-SchleifeBreakContinueVerschachtelte SchleifenSchleifen-LabelsEndlosschleifeRückblick – Dynamische Eingabe