为什么我可以在Kotlin中将可变列表实例化为val(并向其添加元素)?
我刚刚开始学习Kotlin,所以我播放了一段视频,展示了许多常见的Kotlin习语: 就在视频的1:03:10点,演示者讨论了可变集合和不可变集合。正如您在视频中看到的,他创建了一个带有var关键字的可变列表和一个带有val关键字的不可变列表。我很好奇,如果我尝试将val与可变列表一起使用,会发生什么错误;我认为这是不允许的,这个想法会显示这样一个信息,但它没有给我错误信息。然后我在可变列表中添加了一个元素,这也没有导致错误!当我显示MutableList的最后一个元素时,它显示了我添加的元素,因此它不仅没有给我一个错误,而且成功地将一个元素添加到我认为是不可变的东西中 为什么我的代码可以工作?我不敢相信像我这样一个完全的Kotlin初学者在Kotlin中发现了一个基本的bug,所以肯定还有别的东西在发生。有人能解释一下吗 这是我的密码:为什么我可以在Kotlin中将可变列表实例化为val(并向其添加元素)?,kotlin,Kotlin,我刚刚开始学习Kotlin,所以我播放了一段视频,展示了许多常见的Kotlin习语: 就在视频的1:03:10点,演示者讨论了可变集合和不可变集合。正如您在视频中看到的,他创建了一个带有var关键字的可变列表和一个带有val关键字的不可变列表。我很好奇,如果我尝试将val与可变列表一起使用,会发生什么错误;我认为这是不允许的,这个想法会显示这样一个信息,但它没有给我错误信息。然后我在可变列表中添加了一个元素,这也没有导致错误!当我显示MutableList的最后一个元素时,它显示了我添加的元素,
val list3: MutableList<Int> = mutableListOf(6,7,8)
list3.add(5)
println("list3 last item: ${list3.last()}")
val
仅表示变量本身无法重新分配。它没有说明变量中的对象是否可变
如果您尝试这样做,您将得到一个错误
val list3: MutableList<Int> = mutableListOf(6,7,8)
list3 = mutableListOf(1,2,3) // cannot re-assign to val
vallist3:MutableList=mutableListOf(6,7,8)
list3=mutableListOf(1,2,3)//无法重新分配给val
val
仅表示变量本身无法重新分配。它没有说明变量中的对象是否可变
如果您尝试这样做,您将得到一个错误
val list3: MutableList<Int> = mutableListOf(6,7,8)
list3 = mutableListOf(1,2,3) // cannot re-assign to val
vallist3:MutableList=mutableListOf(6,7,8)
list3=mutableListOf(1,2,3)//无法重新分配给val
val
表示值,因此您可以将该val
分配给对象一次,就像Java中的final
关键字一样。再次尝试重新分配val
时,将发生错误
val list3: MutableList<Int> = mutableListOf(6,7,8)
list3.add(5)
println("list3 last item: ${list3.last()}")
在上面的例子中,由于我们试图分配list3
一个mutableList
希望它有帮助
val
意味着值,这样您就可以将val
分配给一个对象一次,就像Java中的final
关键字一样。再次尝试重新分配val
时,将发生错误
val list3: MutableList<Int> = mutableListOf(6,7,8)
list3.add(5)
println("list3 last item: ${list3.last()}")
在上面的例子中,由于我们试图分配list3
一个mutableList
希望能有帮助