Wyrażenie „match”
Część sekcji Logika i przepływ programu ścieżki Rust w Coddy. Lekcja 1 z 66.
Wyrażenie match to potężne narzędzie Rust do dopasowywania wzorców, które pozwala porównywać wartość z różnymi wzorcami i wykonywać kod w zależności od tego, który wzorzec pasuje. Możesz myśleć o nim jak o bardziej zaawansowanej wersji instrukcji if, która pozwala elegancko obsługiwać wiele warunków.
Oto podstawowa składnia wyrażenia match:
match value {
pattern1 => code_to_run,
pattern2 => code_to_run,
_ => default_code,
}Każdy wiersz wewnątrz match nazywa się „ramieniem”. => oddziela wzorzec od kodu, który jest wykonywany, gdy ten wzorzec pasuje. Podkreślenie _ to specjalny wzorzec wieloznaczny, który pasuje do wszystkiego — działa jak „wzorzec domyślny” dla każdej wartości, która nie pasuje do pozostałych wzorców.
Oto prosty przykład, który sprawdza liczbę:
let number = 2;
match number {
1 => println!("One"),
2 => println!("Two"),
_ => println!("Other"),
}W Rust wyrażenia match muszą być wyczerpujące, co oznacza, że muszą obsługiwać każdą możliwą wartość. Dlatego symbol wieloznaczny _ jest tak ważny — gwarantuje, że uwzględniono wszystkie przypadki, które nie zostały dopasowane jawnie.
match jest wyrażeniem, więc może też zwracać wartość. Gdy jest ostatnim wyrażeniem w funkcji, wartość pasującej gałęzi jest tym, co zwraca funkcja:
fn day_name(day: i32) -> String {
match day {
1 => String::from("Monday"),
2 => String::from("Tuesday"),
_ => String::from("Another day"),
}
}Ponieważ ta funkcja zwraca wartość typu String, każda gałąź zamienia swój tekst (wartość typu &str) na String za pomocą String::from lub .to_string().
Wyzwanie
ŁatwyNapisz funkcję describe_number, która przyjmuje num i zwraca opis w postaci ciągu znaków na podstawie wartości liczby.
Użyj wyrażenia match, aby zwracać różne opisy dla różnych liczb.
Warunki:
- Jeśli
numma wartość0, zwróć"zero" - Jeśli
numma wartość1, zwróć"one" - Jeśli
numma wartość2, zwróć"two" - Jeśli
numma wartość3, zwróć"three" - Dla każdej innej liczby zwróć
"many"
Parametry:
num(i32): Liczba do opisania
Zwraca: Opis liczby w postaci ciągu znaków (String)
Spróbuj swoich sił
fn describe_number(num: i32) -> String {
// Napisz kod tutaj
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Zaawansowane sterowanie przepływem
Wyrażenie „match”Dopasowywanie wielu wartościDopasowywanie zakresówWyrażenie „if let”Pętle jako wyrażeniaPodsumowanie — prosty parser poleceń4Grupowanie danych za pomocą struktur
Czym jest struktura?Przegląd strukturDostęp do pól strukturyModyfikowalne strukturyStruktury jako parametry funkcjiStruktury krotkowePodsumowanie — utwórz strukturę Book2Wprowadzenie do wektorów
Czym jest wektor?Tworzenie wektoraDodawanie elementów za pomocą pushDostęp do elementów wektoraIterowanie po wektorzeIterowanie z możliwością modyfikacjiUsuwanie elementówPodsumowanie — prosty licznik punktów5Pary klucz–wartość z mapami hashującymi
Czym jest mapa haszująca?Tworzenie mapy haszującejWstawianie par klucz–wartośćDostęp do wartościIterowanie po mapie haszującejAktualizowanie wartościUsuwanie paryPodsumowanie – licznik słów8Projekt: Prosty system inwentaryzacji
Konfiguracja projektuDodawanie produktuSprawdzanie stanu magazynowegoSprzedaż produktuŁączenie wszystkiego w całość3Lista zadań w wierszu poleceń
Konfiguracja projektuDodawanie zadaniaWyświetlanie wszystkich zadańUsuwanie zadaniaKońcowy kodPoćwicz samodzielnie: Kompilator Rust online