Sobes.tech
Junior — Middle

Czy wartość typu val jest niezmienna po jej zadeklarowaniu?

sobes.tech AI

Odpowiedź od AI

W Kotlinie słowo kluczowe val oznacza niezmienną referencję, czyli po przypisaniu wartości do zmiennej zadeklarowanej jako val, nie można zmienić tej referencji na inny obiekt. Jednakże, nie oznacza to, że sam obiekt, na który wskazuje val, jest niezmienny. Jeśli obiekt jest zmienny (np. MutableList), jego wewnętrzny stan może być zmieniany, mimo że referencja val się nie zmieni.

Przykład:

val list = mutableListOf(1, 2, 3)
list.add(4) // To jest dozwolone, zawartość listy się zmienia

// list = mutableListOf(5, 6) // Błąd: nie można ponownie przypisać `val`

W związku z tym, val gwarantuje niezmienność referencji, ale nie obiektu.