Junior — Middle
Az érték típusú val értéke változatlan marad a deklarálás után?
sobes.tech MI
Válasz az MI-től
Kotlinban a val kulcsszó egy változhatatlan hivatkozást jelent, vagyis miután egy val-lal deklarált változónak értéket adunk, nem változtathatjuk meg ezt a hivatkozást más objektumra. Ez azonban nem jelenti azt, hogy maga az objektum, amelyre a val hivatkozik, változatlan lenne. Ha az objektum módosítható (például MutableList), belső állapota változtatható, még akkor is, ha a val hivatkozás nem változik.
Példa:
val list = mutableListOf(1, 2, 3)
list.add(4) // Ez megengedett, a lista tartalma változik
// list = mutableListOf(5, 6) // Hiba: nem lehet újra hozzárendelni egy `val`-t
Így a val garantálja a hivatkozás változatlanságát, de nem az objektumét.