Menu
Coddy logo textTech

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 dopasowywania wzorców w Rust, które pozwala porównać wartość z różnymi wzorcami i wykonać 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 elegancko obsługuje wiele warunków.

Oto podstawowa składnia wyrażenia match:

match value {
    pattern1 => code_to_run,
    pattern2 => code_to_run,
    _ => default_code,
}

Każda linia wewnątrz match nazywa się „ramieniem”. => oddziela wzorzec od kodu, który uruchamia się, gdy 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 sprawdzający 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 jawnie dopasowane.

challenge icon

Wyzwanie

Łatwy
Napisz funkcję describe_number, która przyjmuje num i zwraca opis tekstowy na podstawie wartości liczby.

Użyj wyrażenia match, aby zwracać różne opisy dla różnych liczb.

Warunki:

  • Jeśli num ma wartość 0, zwróć "zero"
  • Jeśli num ma wartość 1, zwróć "one"
  • Jeśli num ma wartość 2, zwróć "two"
  • Jeśli num ma wartość 3, zwróć "three"
  • Dla każdej innej liczby zwróć "many"

Parametry:

  • num (i32): liczba do opisania

Zwraca: opis tekstowy liczby (String)

Spróbuj swoich sił

fn describe_number(num: i32) -> String {
    // Wpisz kod tutaj
}
quiz iconSprawdź się

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

Poćwicz samodzielnie: Kompilator Rust online