Wyrażenia match
Rozgałęzianie na podstawie kształtu
Wyrażenia match to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Czym jest match?
match to potężna konstrukcja rozgałęziająca w Scali. Podaje się jej wartość oraz serię wzorców case, a ona wykonuje pierwszą pasującą gałąź.
Można ją traktować jako bardziej rozbudowaną, opartą na wyrażeniach wersję instrukcji switch.
Podstawowa składnia
Zapisuje się value match { case pattern => result }. Każdy element case definiuje wzorzec oraz kod wykonywany po jego dopasowaniu.
Ponieważ match jest wyrażeniem, cała konstrukcja zwraca wartość.
object Main {
def main(args: Array[String]): Unit = {
val n = 2
val word = n match {
case 1 => "one"
case 2 => "two"
case 3 => "three"
}
println(word)
}
}Wzorzec wieloznaczny
Podkreślenie _ jest wzorcem wieloznacznym, który pasuje do wszystkiego. Należy używać go na końcu jako domyślnego przypadku przechwytującego wszystkie pozostałe wartości.
Bez niego niedopasowana wartość powoduje w czasie wykonywania wyjątek MatchError.
object Main {
def main(args: Array[String]): Unit = {
val n = 9
val word = n match {
case 1 => "one"
case 2 => "two"
case _ => "many"
}
println(word)
}
}Dopasowywanie napisów
Wzorce nie ograniczają się do liczb. Można bezpośrednio dopasowywać literały napisowe.
object Main {
def main(args: Array[String]): Unit = {
val cmd = "start"
val msg = cmd match {
case "start" => "Starting up"
case "stop" => "Shutting down"
case _ => "Unknown command"
}
println(msg)
}
}match zwraca wartość
Ponieważ każda gałąź zwraca wartość, wynik match można przypisać do val lub użyć bezpośrednio w wyrażeniu.
Dzięki temu kod pozostaje przejrzysty i nie wymaga zmiennych mutowalnych.
object Main {
def main(args: Array[String]): Unit = {
val light = "red"
println(s"Action: " + (light match {
case "red" => "stop"
case "green" => "go"
case _ => "caution"
}))
}
}Łączenie przypadków
W jednym przypadku można dopasować kilka wartości za pomocą | (pionowej kreski). Wszystkie wymienione wartości prowadzą do tej samej gałęzi.
object Main {
def main(args: Array[String]): Unit = {
val day = "Sat"
val kind = day match {
case "Sat" | "Sun" => "weekend"
case _ => "weekday"
}
println(kind)
}
}match w funkcji
Często całe ciało funkcji stanowi pojedyncze wyrażenie match. Dopasowany wynik staje się wartością zwracaną przez funkcję.
object Main {
def describe(n: Int): String = n match {
case 0 => "zero"
case 1 => "one"
case _ => "other"
}
def main(args: Array[String]): Unit = {
println(describe(0))
println(describe(5))
}
}Przypisywanie całej wartości
W przypadku wieloznacznym można przypisać dopasowaną wartość do nazwy za pomocą case other =>. Następnie można używać other w tej gałęzi.
object Main {
def main(args: Array[String]): Unit = {
val n = 42
val result = n match {
case 0 => "nothing"
case other => s"got $other"
}
println(result)
}
}Kolejność ma znaczenie
Przypadki są sprawdzane od góry do dołu, a wygrywa pierwsze dopasowanie. Bardziej szczegółowe wzorce należy umieszczać przed ogólniejszymi.
Wzorzec wieloznaczny umieszczony zbyt wcześnie zasłoniłby znajdujące się niżej przypadki.
object Main {
def main(args: Array[String]): Unit = {
val n = 1
val msg = n match {
case 1 => "specific one"
case _ => "anything else"
}
println(msg)
}
}Dlaczego używać match?
Dopasowywanie wzorców jest kluczowym elementem Scali, ponieważ:
- zapewnia czytelny zapis rozgałęzień wielokierunkowych
- zwraca wartość jako wyrażenie
- skaluje się do typów, struktur danych i warunków ochronnych
- kompilator może sprawdzać kompletność dopasowania
Połączenie elementów
Oto mały klasyfikator wykorzystujący literały, połączony przypadek oraz przypadek domyślny.
object Main {
def grade(score: Int): String = score match {
case 10 | 9 => "excellent"
case 8 | 7 => "good"
case _ => "keep trying"
}
def main(args: Array[String]): Unit = {
println(grade(9))
println(grade(7))
println(grade(3))
}
}Szybki test
Sprawdź swoją wiedzę o wyrażeniach match.
Podsumowanie
Podstawy match:
- składnia to
value match { case pattern => result } _to wieloznaczny przypadek przechwytujący wszystkie wartości- wartości można łączyć za pomocą
| matchjest wyrażeniem zwracającym wartość- przypadki są sprawdzane od góry do dołu; wygrywa pierwsze dopasowanie
Często zadawane pytania
Czy lekcja „Wyrażenia match” jest bezpłatna?
Tak — pełny tekst „Wyrażenia match” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 4 lekcji w sumie.
Co nauczysz się w „Wyrażenia match”?
Rozgałęzianie na podstawie kształtu Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Wyrażenia match”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.