Scala for Backend Engineering & Functional Programming · Lekcja

val, var i typy

Powiązania i inferencja

Lekcja 2 z 413 kroki

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:

  • Int dla liczb całkowitych
  • Long dla dużych liczb całkowitych
  • Double dla liczb dziesiętnych
  • Float dla 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:

  • val to niezmienne powiązanie, a var jest 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, Char i String
  • Warto preferować val, aby kod był bezpieczniejszy i czytelniejszy
Bezpłatny start

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.

Wszystkie lekcje w tym kursie

  1. Korzystanie z REPL
  2. val, var i typy
  3. Wyrażenia zamiast instrukcji
  4. Interpolacja napisów
← Powrót do Scala for Backend Engineering & Functional Programming