Instrukcja match
Część sekcji Podstawy ścieżki Rust w Coddy. Lekcja 26 z 75.
Wyrażenie match umożliwia porównanie wartości z serią wzorców i wykonanie kodu w zależności od tego, który wzorzec pasuje.
Oto podstawowa struktura wyrażenia match:
match variable {
pattern1 => expression1,
pattern2 => expression2,
// ... więcej wzorców
_ => default_expression,
}Po słowie kluczowym match następuje wartość, którą chcesz przetestować.
Każde ramię dopasowania składa się ze wzorca, po którym następuje =>, a następnie kod do wykonania.
Podkreślenie _ to przypadek domyślny, który pasuje do wszystkiego, co nie pasuje do innych wzorców.
Oto przykład:
let day = 3;
let day_name = match day {
1 => "Monday",
2 => "Tuesday",
3 => "Wednesday",
// ... więcej wzorców,
_ => "Invalid day",
};W przypadku wielu wierszy kodu w ramieniu użyj bloku:
let day = 3;
let day_name = match day {
1 => {
println!("First day of the week!");
"Monday"
},
2 => "Tuesday",
// ... pozostałe przypadki
_ => "Invalid day",
};Możesz dopasować wiele wzorców za pomocą |:
let day = 3;
let day_type = match day {
1 | 2 | 3 | 4 | 5 => "Weekday",
6 | 7 => "Weekend",
_ => "Invalid day",
};Wyrażenia match w Rust muszą być wyczerpujące, co oznacza, że muszą obejmować wszystkie możliwe wartości. Kompilator sprawdzi to za Ciebie.
Wyzwanie
PoczątkującyUtwórz program, który pobiera numer miesiąca (1 oznacza styczeń, 2 luty itd.) i wyświetla porę roku, do której należy. Użyj instrukcji match do określenia logiki.
Pory roku i odpowiadające im miesiące to:
"Winter": grudzień (12), styczeń (1), luty (2)"Spring": marzec (3), kwiecień (4), maj (5)"Summer": czerwiec (6), lipiec (7), sierpień (8)"Autumn": wrzesień (9), październik (10), listopad (11)
Przypisz do season dokładnie te angielskie ciągi znaków, aby program wyświetlał na przykład status = Spring.
Spróbuj swoich sił
use std::io;
fn main() {
let mut input = String::new();
io::stdin().read_line(&mut input).unwrap();
let month: i32 = input.trim().parse().unwrap();
// Napisz swój kod poniżej
let season =
// Nie zmieniaj poniższej linijki
println!("status = {}", season);
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Podstawy
4Operatory, część 1
Operatory arytmetyczneOperator moduloSkrócone operacje arytmetyczneOperatory porównaniaPorównywanie ciągów znaków7Podstawowe wejście i wyjście
Wyświetlanie w konsoliOdczytywanie danych od użytkownikaPowtórka – do 120Powtórka – prawda czy fałsz5Operatory, część 2
Operatory logiczne, część 1Operatory logiczne, część 2Powtórka — prosta logikaOperatory logiczne, część 311Funkcje
Deklarowanie funkcjiParametry i argumentyWartości zwracaneWiele wartości zwracanychPowtórka – funkcja SigmaPowtórka – funkcja walidująca14Iterowanie po tablicach
Przewodnik po zakresachUlepszona pętla forPożyczanie w pętliTypowe operacje na tablicach3Zmienne – część 2
Deklarowanie typuKonwencje nazewnictwaWnioskowanie o typiePodsumowanie – inicjalizacja zmiennychRzutowanie typów9Pętle
Pętla for dla sekwencjiPętla whileInstrukcja breakInstrukcja continuePętle zagnieżdżoneEtykiety pętliPętla nieskończonaPodsumowanie — dynamiczne dane wejściowe12Podstawy tablic
Deklarowanie tablicTablica jako parametrDostęp do elementówModyfikowanie tablicPodsumowanie — czytelny wydruk tablicy15Operacje na ciągach znaków
Metody ciągów znakówMakro format!Konwersja ciągów znakówPowtórka — formatowaniePoćwicz samodzielnie: Kompilator Rust online