Table of Contents
Uvod u Scalu 🔗
Scala je prije svega potpuno objektno orijentisan jezik.
To znači da su sve vrijednosti u programu objekti, čak i brojevi i karakteri!
Ovo nije slučaj u Javi, gdje imamo 7 "primitivnih tipova" kao što su int, char, boolean...
U Scali su oni predstavljeni klasama Int, Char, Boolean...
U C# je sličan slučaj kao i u Scali, gdje je int samo alijas za Int32, ali je i dalje klasa.
Ovaj koncept se naziva i "unified types".
Da pogledamo deklaraciju konstante:
val x: Int = 5
Tip se piše nakon naziva varijable, kao u Pascalu.
U većini slučajeva kompajler nam može pomoći s "zaključivanjem tipa" (type inference).
Kompajler će skontat za nas da je to broj! Tako da je prethodni primjer ekvivalentan sljedećem:
val x = 5
Primijetite i to da tačkazarez nije potrebna! Napokon!!!
Izgleda da su pisci kompajlera vrlo lijeni ljudi... :D S razlogom, naravno.
Ključna riječ val (skraćeno od value) označava konstantu, isto kao final u Javi:
final int x = 5;
Naravno, sljedeći kod se neće iskompajlirati.
Dobićemo grešku "reassignment to val".
val x = 5
x = 6
Da vidimo sada dobru staru varijablu, koja se deklariše s var, logično:
var y = 5
y = 6
y += 3
Varijabla y na kraju ima vrijednost 9.
U Scali imamo još jednu vrstu varijable, tzv. "lijena konstanta" (lazy value):
lazy val z = 5
Vrijednost lazy val će se izračunati samo jednom, i to tek kada se pozove u programu!
Npr. ako z poziva neku funkciju koja sadrži println, ispisaće se na ekran tek kada pozovemo z (tj. evaluiraće se funkcija).
Ovaj koncept je poznat iz FP, vrlo je koristan za keširanje vrijednosti.