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 гарантира неизменяемост на препратката, но не и на обекта.