Wyrażenia zamiast instrukcji
Wszystko jest wyrażeniem
Wyrażenia zamiast instrukcji to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 3 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.
Wyrażenia a instrukcje
Instrukcja wykonuje działanie, ale nie zwraca użytecznego wyniku. Wyrażenie oblicza się do wartości.
W Scali niemal wszystko jest wyrażeniem. To podstawowa idea, która wpływa na sposób pisania kodu.
if jest wyrażeniem
W wielu językach if jest instrukcją. W Scali if/else zwraca wartość, więc można bezpośrednio przypisać ją do elementu val.
Nie ma potrzeby tworzenia osobnej zmiennej przypisywanej w każdej gałęzi.
object Main {
def main(args: Array[String]): Unit = {
val temp = 30
val label = if (temp > 25) "hot" else "mild"
println(label)
}
}Bloki są wyrażeniami
Blok { ... } również jest wyrażeniem. Jego wartością jest wartość jego ostatniego wiersza.
Można więc obliczyć wartości pośrednie, a następnie zakończyć blok wynikiem.
object Main {
def main(args: Array[String]): Unit = {
val result = {
val a = 2
val b = 3
a * b
}
println(result)
}
}match jest wyrażeniem
Dopasowanie wzorców za pomocą match również zwraca wartość. Każda gałąź generuje wynik, a całe wyrażenie zwraca wartość dopasowanej gałęzi.
object Main {
def main(args: Array[String]): Unit = {
val day = 3
val name = day match {
case 1 => "Mon"
case 2 => "Tue"
case 3 => "Wed"
case _ => "Other"
}
println(name)
}
}Typ Unit
Niektóre wyrażenia istnieją wyłącznie ze względu na efekt uboczny, na przykład println. Zwracają one Unit, zapisywany jako ().
Unit przypomina void z innych języków, ale nadal jest rzeczywistą wartością.
object Main {
def main(args: Array[String]): Unit = {
val nothing: Unit = println("side effect")
println(nothing)
}
}Zwracanie wartości z funkcji
Ponieważ ciało funkcji jest wyrażeniem, ostatnie wyrażenie stanowi jej wartość zwracaną. Słowo kluczowe return jest rzadko potrzebne.
W tym przypadku ciało funkcji jest pojedynczym wyrażeniem.
object Main {
def max(a: Int, b: Int): Int = if (a > b) a else b
def main(args: Array[String]): Unit = {
println(max(7, 4))
}
}Funkcje oparte na wyrażeniach
Funkcja może być wyrażeniem blokowym, którego ostatni wiersz jest wynikiem. Pozwala to zachować zwięzłość logiki i uniknąć zmiennych tymczasowych.
object Main {
def discount(price: Double): Double = {
val rate = if (price > 100) 0.2 else 0.1
price * (1 - rate)
}
def main(args: Array[String]): Unit = {
println(discount(150.0))
}
}Zmienność nie jest potrzebna
Ponieważ if i match są wyrażeniami, ich wynik można przypisać do elementu val zamiast modyfikować element var.
Prowadzi to do czystszego, bardziej funkcyjnego kodu.
object Main {
def main(args: Array[String]): Unit = {
val score = 85
val grade = if (score >= 90) "A"
else if (score >= 80) "B"
else "C"
println(grade)
}
}Komponowanie wyrażeń
Ponieważ wszystko zwraca wartość, wyrażenia można swobodnie zagnieżdżać i komponować. Wynik jednego staje się danymi wejściowymi kolejnego.
Ta możliwość komponowania jest jednym z głównych powodów, dla których Scala jest tak ekspresyjna.
object Main {
def main(args: Array[String]): Unit = {
val n = 7
val message = "n is " + (if (n % 2 == 0) "even" else "odd")
println(message)
}
}Dlaczego ma to znaczenie
Kod oparty na wyrażeniach:
- ogranicza potrzebę używania zmiennych
- wyraźnie pokazuje przepływ wartości
- naturalnie składa się w większe programy
- doskonale współgra z niezmiennością
Wszystko razem
W tym przykładzie wyrażenie blokowe zawiera wyrażenie if, a całość jest przypisana do jednego niezmiennego wyniku.
object Main {
def main(args: Array[String]): Unit = {
val total = {
val items = 3
val each = 12
val raw = items * each
if (raw > 30) raw - 5 else raw
}
println(total)
}
}Szybkie sprawdzenie
Proszę sprawdzić swoją znajomość wyrażeń.
Podsumowanie
Dowiedzieli się Państwo, że w Scali niemal wszystko jest wyrażeniem:
if/else,matchi bloki zwracają wartości- Wartością bloku jest jego ostatnie wyrażenie
- Wyrażenia powodujące efekty uboczne zwracają
Unit(()) - Ostatnie wyrażenie funkcji jest jej wartością zwracaną
- Ogranicza to zmienność i poprawia możliwość komponowania
Ucz się Scala dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 39
- Lekcje
- 143
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”?
Wszystko jest wyrażeniem Ć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 3 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
- Korzystanie z REPL
- val, var i typy
- Wyrażenia zamiast instrukcji
- Interpolacja napisów