Sobes.tech
Junior — Middle

Стойността от тип val е неизменяема след обявяването ѝ?

sobes.tech AI

Отговор от AI

В Kotlin ключовата дума val означава неизменяема препратка, то есть след като на променлива, обявена с val, бъде присвоена стойност, не може да се промени тази препратка към друг обект. Това обаче не означава, че самият обект, към който сочи val, е неизменяем. Ако обектът е променяем (например, MutableList), неговото вътрешно състояние може да бъде променено, въпреки че препратката val няма да се промени.

Пример:

val list = mutableListOf(1, 2, 3)
list.add(4) // Това е допустимо, съдържанието на списъка се променя

// list = mutableListOf(5, 6) // Грешка: не може да се преназначи `val`

Следователно, val гарантира неизменяемост на препратката, но не и на обекта.