Sobes.tech
Junior — Middle

Je hodnota typu val neměnná po jejím deklarování?

sobes.tech AI

Odpověď od AI

V Kotlinu znamená klíčové slovo val neměnnou referenci, tj. po přiřazení hodnoty proměnné deklarované s val nelze tuto referenci změnit na jiný objekt. To však neznamená, že samotný objekt, na který val odkazuje, je neměnný. Pokud je objekt změnitelný (například MutableList), jeho vnitřní stav může být změněn, i když se referencí val nezmění.

Příklad:

val list = mutableListOf(1, 2, 3)
list.add(4) // To je povoleno, obsah seznamu se změní

// list = mutableListOf(5, 6) // Chyba: nelze přepsat `val`

Tedy, val garantuje neměnnost reference, nikoli však objektu.