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
}
//请告诉我为什么它不是错误
答案 0 :(得分:4)
在Kotlin中,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
,但仍可以更改其内容。
这是不变性(您将无法更改数组内容)和只读(您无法重新分配变量)之间的区别。
示例:
.ipynb