0Pricing
Scala for Backend Engineering & Functional Programming · Lekcja

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ą |
  • match jest 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.

Wszystkie lekcje w tym kursie

  1. Wyrażenia match
  2. Dopasowywanie typów i wartości
  3. Strażnicy i wiązanie
  4. Dekonstrukcja
← Powrót do Scala for Backend Engineering & Functional Programming