Der 'match'-Ausdruck
Teil des Abschnitts Logik & Kontrollfluss der Rust-Journey von Coddy. Lektion 1 von 66.
Der Ausdruck match ist Rusts leistungsstarkes Werkzeug für den Musterabgleich. Damit kannst du einen Wert mit verschiedenen Mustern vergleichen und abhängig davon, welches Muster passt, Code ausführen. Stell ihn dir als eine fortgeschrittenere Version von if-Anweisungen vor, die mehrere Bedingungen elegant behandeln kann.
Hier ist die grundlegende Syntax eines match-Ausdrucks:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Jede Zeile innerhalb des match wird als „Arm“ bezeichnet. => trennt das Muster von dem Code, der ausgeführt wird, wenn dieses Muster übereinstimmt. Der Unterstrich _ ist ein spezielles Platzhaltermuster, das auf alles passt – es ist wie ein „Auffangmuster“ für jeden Wert, der nicht zu den anderen Mustern passt.
Hier ist ein einfaches Beispiel, das eine Zahl prüft:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}In Rust müssen match-Ausdrücke vollständig sein, das heißt, sie müssen jeden möglichen Wert behandeln. Deshalb ist der Platzhalter _ so wichtig – er stellt sicher, dass du alle Fälle abgedeckt hast, die nicht ausdrücklich abgeglichen wurden.
match ist ein Ausdruck und kann daher auch einen Wert erzeugen. Wenn er der letzte Ausdruck in einer Funktion ist, ist der Wert des passenden Arms der Wert, den die Funktion zurückgibt:
fn day_name(day: i32) -> String {
match day {
1 => String::from("Monday"),
2 => String::from("Tuesday"),
_ => String::from("Another day"),
}
}Da diese Funktion einen String zurückgibt, wandelt jeder Arm seinen Text (ein &str) mit String::from oder .to_string() in einen String um.
Aufgabe
EinfachSchreiben Sie eine Funktion describe_number, die num entgegennimmt und eine String-Beschreibung basierend auf dem Wert der Zahl zurückgibt.
Verwenden Sie einen match-Ausdruck, um verschiedene Beschreibungen für verschiedene Zahlen zurückzugeben.
Bedingungen:
- Wenn
numgleich0ist, geben Sie"zero"zurück - Wenn
numgleich1ist, geben Sie"one"zurück - Wenn
numgleich2ist, geben Sie"two"zurück - Wenn
numgleich3ist, geben Sie"three"zurück - Für jede andere Zahl geben Sie
"many"zurück
Parameter:
num(i32): Die zu beschreibende Zahl
Rückgabewert: Eine String-Beschreibung der Zahl (String)
Probier es selbst
fn describe_number(num: i32) -> String {
// Schreibe hier Code
}
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Kontrollfluss
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Übe selbstständig: Online-Rust-Compiler