Sobes.tech
Junior — Middle

Ar `val` tipo reikšmė yra nekintama po jos deklaravimo?

sobes.tech AI

Atsakymas iš AI

Kotlin'eje, raktas žodis val reiškia nekeičiama nuorodą, tai yra, po to, kai kintamajam, deklaruotam su val, priskiriama reikšmė, negalima pakeisti šios nuorodos į kitą objektą. Tačiau tai nereiškia, kad pats objektas, į kurį nurodo val, yra nekeičiama. Jei objektas yra keičiamas (pavyzdžiui, MutableList), jo vidinė būsena gali būti keičiama, nepaisant to, kad val nuoroda nesikeis.

Pavyzdys:

val list = mutableListOf(1, 2, 3)
list.add(4) // Tai leidžiama, sąrašo turinys keičiasi

// list = mutableListOf(5, 6) // Klaida: neleidžiama perrašyti `val`

Taigi, val garantuoja nuorodos nekintamumą, bet ne objekto.