Sobes.tech
Junior — Middle

Da li je vrednost tipa val nepromenljiva nakon deklaracije?

sobes.tech АИ

Одговор од АИ

U Kotlinu, ključna reč val označava nepromenjivu referencu, tj. nakon što se vrednost dodeli promenljivoj deklarisanoj sa val, ne može se ta referenca promeniti na drugi objekat. Međutim, to ne znači da je sam objekat na koji val ukazuje nepromenjiv. Ako je objekat promenljiv (npr. MutableList), njegovo unutrašnje stanje može biti promenjeno, iako se referenca val neće promeniti.

Primer:

val list = mutableListOf(1, 2, 3)
list.add(4) // Ovo je dozvoljeno, sadržaj liste se menja

// list = mutableListOf(5, 6) // Greška: ne može se ponovo dodeliti `val`

Dakle, val garantuje nepromenljivost reference, ali ne i objekta.