val, var i typy
Powiązania i inferencja
val, var i typy to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 2 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.
Powiązania w Scali
W Scali nadaje się wartościom nazwy za pomocą powiązań. Służą do tego dwa słowa kluczowe: val i var.
val jest niezmienne (nie można przypisać mu nowej wartości), natomiast var jest zmienne (można przypisać mu nową wartość).
Deklarowanie val
val jednorazowo wiąże nazwę z wartością. Próba przypisania mu nowej wartości powoduje błąd kompilacji.
Domyślnie należy preferować val. Niezmienność ułatwia analizowanie kodu.
object Main {
def main(args: Array[String]): Unit = {
val name = "Ada"
println(name)
}
}Deklarowanie var
Do elementu var można przypisać nową wartość za pomocą =. Należy używać go tylko wtedy, gdy rzeczywiście potrzebny jest zmienny stan.
Proszę zauważyć, że nowa wartość nadal musi być zgodna z pierwotnym typem.
object Main {
def main(args: Array[String]): Unit = {
var count = 0
count = count + 1
count = count + 1
println(count)
}
}Wnioskowanie typów
Scala zazwyczaj sama ustala typ. Zapis val x = 42 automatycznie nadaje elementowi x typ Int.
Nazywa się to wnioskowaniem typów: otrzymują Państwo typowanie statyczne bez konieczności każdorazowego zapisywania typu.
object Main {
def main(args: Array[String]): Unit = {
val x = 42
val pi = 3.14
val flag = true
println(x)
println(pi)
println(flag)
}
}Jawne adnotacje typów
Typ można również podać jawnie po dwukropku: val x: Int = 42.
Jest to przydatne w dokumentacji lub gdy chcą Państwo wybrać szerszy typ niż wywnioskowany.
object Main {
def main(args: Array[String]): Unit = {
val age: Int = 30
val price: Double = 9.99
val label: String = "Sale"
println(label + ": " + price)
}
}Popularne typy liczbowe
Scala udostępnia kilka typów liczbowych:
Intdla liczb całkowitychLongdla dużych liczb całkowitychDoubledla liczb dziesiętnychFloatdla liczb dziesiętnych o mniejszej precyzji
Literał całkowity ma domyślnie typ Int, a literał dziesiętny — Double.
object Main {
def main(args: Array[String]): Unit = {
val whole: Int = 7
val big: Long = 9000000000L
val dec: Double = 2.5
println(whole + dec)
}
}Boolean i Char
Boolean przechowuje wartość true lub false. Char przechowuje pojedynczy znak zapisany w apostrofach.
Są to pełnoprawne typy, które można przechowywać w elementach val i var.
object Main {
def main(args: Array[String]): Unit = {
val isReady: Boolean = true
val grade: Char = 'A'
println(isReady)
println(grade)
}
}Typ String
String przechowuje tekst ujęty w cudzysłowy. Napisy są w Scali niezmienne.
Można je łączyć za pomocą + i wywoływać na nich wiele przydatnych metod.
object Main {
def main(args: Array[String]): Unit = {
val first = "Grace"
val last = "Hopper"
val full = first + " " + last
println(full.toUpperCase)
}
}Dlaczego val zamiast var?
Niezmienne wartości zapobiegają całej klasie błędów: nic innego nie może ich zmienić poza Państwa kontrolą.
- Ułatwiają analizowanie kodu
- Są bezpieczniejsze w kodzie współbieżnym
- Sprzyjają stylowi funkcyjnemu
Po var należy sięgać tylko wtedy, gdy zmienność jest naprawdę wymagana.
Bezpieczeństwo typów w praktyce
Ponieważ Scala jest typowana statycznie, kompilator wykrywa niezgodności typów przed uruchomieniem programu.
Przypisanie tekstu do elementu Int zakończyłoby się błędem podczas kompilacji. Oto poprawny kod zgodny typowo.
object Main {
def main(args: Array[String]): Unit = {
val quantity: Int = 3
val unitPrice: Double = 4.50
val total: Double = quantity * unitPrice
println(total)
}
}Łączenie elementów
W jednym małym programie można połączyć powiązania niezmienne i zmienne, wnioskowanie typów oraz adnotacje.
Proszę zauważyć, jak kompilator śledzi za Państwa każdy typ.
object Main {
def main(args: Array[String]): Unit = {
val base = 100
var running = base
val step: Int = 25
running = running + step
println(running)
}
}Szybkie sprawdzenie
Proszę sprawdzić swoją wiedzę o powiązaniach i typach.
Podsumowanie
Dowiedzieli się Państwo, jak Scala nadaje nazwy wartościom:
valto niezmienne powiązanie, avarjest zmienne- Wnioskowanie typów wybiera typ na podstawie wartości
- Można dodawać jawne adnotacje, takie jak
val x: Int - Podstawowe typy to między innymi
Int,Long,Double,Boolean,ChariString - Warto preferować
val, aby kod był bezpieczniejszy i czytelniejszy
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 „val, var i typy” jest bezpłatna?
Tak — pełny tekst „val, var i typy” 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 „val, var i typy”?
Powiązania i inferencja Ć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 2 z 4.
Ile czasu zajmuje lekcja „val, var i typy”?
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.