0Pricing
Scala for Backend Engineering & Functional Programming · Lekcja

Wyrażenia zamiast instrukcji

Każda rzecz zwraca wartość.

Wyrażenia zamiast instrukcji to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 4 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.

Wszystko jest wyrażeniem

W wielu językach if i bloki są instrukcjami, które wykonują działanie, ale nie zwracają wartości. W Scali są wyrażeniami, które obliczają wartość.

Ta zmiana leży u podstaw programowania funkcyjnego w Scali.

val max = if (3 > 2) 3 else 2

if jako wyrażenie

Wyrażenie Scala if/else zwraca wartość wykonywanej gałęzi. Wynik można bezpośrednio przypisać do val.

Nie trzeba używać zmiennej mutowalnej przypisywanej wewnątrz gałęzi.

object Main extends App {
  val temp = 18
  val label = if (temp > 20) "warm" else "cool"
  println(label)
}

Bloki zwracają ostatni wiersz

Blok { ... } sam w sobie jest wyrażeniem. Jego wartością jest wartość ostatniego wyrażenia znajdującego się w bloku.

W tym przypadku blok oblicza wartość 30, która staje się wartością result.

object Main extends App {
  val result = {
    val a = 10
    val b = 20
    a + b
  }
  println(result)
}

Nie trzeba jawnie używać return

Ponieważ ciało metody jest wyrażeniem, jego wartością jest po prostu wartość ostatniego obliczonego wyrażenia. Słowo kluczowe return jest używane rzadko.

Obie poniższe metody działają tak samo, ale idiomatyczna wersja pomija return.

def double(x: Int) = x * 2
// instead of: def double(x: Int) = { return x * 2 }

match także jest wyrażeniem

Dopasowywanie wzorców za pomocą match również zwraca wartość, dzięki czemu świetnie nadaje się do mapowania danych wejściowych na wyniki.

Każda gałąź case zwraca wartość dla swojej gałęzi.

object Main extends App {
  val day = 3
  val name = day match {
    case 1 => "Mon"
    case 3 => "Wed"
    case _ => "Other"
  }
  println(name)
}

Wyrażenia można komponować

Ponieważ wyrażenia zwracają wartości, można je swobodnie zagnieżdżać i łączyć.

if może być argumentem funkcji lub częścią większego obliczenia, bez używania zmiennych tymczasowych.

object Main extends App {
  val n = 7
  println("sign: " + (if (n >= 0) "+" else "-"))
}

Instrukcje nadal istnieją

Nie wszystko zwraca użyteczną wartość. Operacje wykonywane wyłącznie ze względu na efekty uboczne, takie jak println lub przypisanie, obliczają wartość Unit.

Są to wyrażenia Scali przypominające instrukcje.

val x: Unit = println("hello") // value is ()

Unikaj var w wyrażeniach

Styl oparty na wyrażeniach pozwala zastąpić wzorce z mutowalnym var. Zamiast deklarować var i przypisywać mu wartość w gałęziach, przypisz całe wyrażenie if do val.

object Main extends App {
  val score = 85
  val grade = if (score >= 90) "A" else if (score >= 80) "B" else "C"
  println(grade)
}

for zwraca wartości

for z yield jest wyrażeniem, które tworzy nową kolekcję, zamiast jedynie wykonywać pętlę ze względu na efekty uboczne.

W ten sposób iteracja staje się transformacją zwracającą wartość.

object Main extends App {
  val squares = for (i <- 1 to 4) yield i * i
  println(squares)
}

Dlaczego ma to znaczenie w kodzie backendu

Kod oparty na wyrażeniach jest zwykle krótszy, ma mniej elementów i łatwiej go testować.

  • Mniej zmiennych mutowalnych oznacza mniej błędów.
  • Wyniki naturalnie wynikają z danych wejściowych.
  • Dobrze współpracuje z funkcyjnymi bibliotekami Scali.

Styl instrukcji a styl wyrażeń

Porównaj oba sposoby myślenia. Styl instrukcji modyfikuje zmienną, a styl wyrażeń bezpośrednio zwraca wartość.

Scala pozwala korzystać z obu stylów, ale preferuje styl oparty na wyrażeniach.

var s = ""            // statement style
if (true) s = "yes" else s = "no"

val e = if (true) "yes" else "no" // expression style

Szybkie sprawdzenie

Co oblicza wyrażenie if/else w Scali?

Podsumowanie

Scala preferuje wyrażenia zwracające wartości zamiast instrukcji, które jedynie modyfikują stan.

  • if, match, bloki oraz for/yield zwracają wartości.
  • Ciała metod zwracają ostatnie wyrażenie; return jest rzadko potrzebne.
  • Kod wywołujący efekty uboczne zwraca Unit.
  • Ten styl ogranicza użycie var i liczbę błędów.

Często zadawane pytania

Czy lekcja „Wyrażenia zamiast instrukcji” jest bezpłatna?

Tak — pełny tekst „Wyrażenia zamiast instrukcji” 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 zamiast instrukcji”?

Każda rzecz zwraca wartość. Ć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 4 z 4.

Ile czasu zajmuje lekcja „Wyrażenia zamiast instrukcji”?

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. val a var
  2. Podstawowe typy i literały
  3. Wnioskowanie typów
  4. Wyrażenia zamiast instrukcji
← Powrót do Scala for Backend Engineering & Functional Programming