почему val не влияет на массив в KOTLIN? - PullRequest
0 голосов
/ 06 июня 2019
fun main(args:Array<String>)
{
    val num:Int=6
    //  num=10 if I initialize like this it will error
    val arr=Array<Int>(5){0}
    arr[0]=5  //when I initialize like this it not error 
}

// Скажите, пожалуйста, почему это не ошибка

1 Ответ

4 голосов
/ 06 июня 2019

В Kotlin val означает «только для чтения», т.е. установщик для этого свойства не будет создан.Это означает, что вы не можете переназначить arr, но вы все равно можете изменить его содержимое.

В этом разница между неизменяемостью (вы не сможете изменить содержимое массива) и только для чтения (вы не можетепереназначить переменную).

Пример:

val readOnly = arrayListOf<Int>()
readOnly.add(1) // OK
readOnly = arrayListOf() // compilation error

val immutable = Collections.unmodifiableList(arrayListOf(1))
immutable[0] = 2 // throws exception at runtime

val anotherImmutable = listOf(1)
anotherImmutable[0] = 2 // compilation error
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...