list - Kotlin List 和 MutableList:两个不同的引用,指向同一个集合对象
问题描述
你能举一个例子来说明这个引用:
使用集合接口时要记住的关键是只读集合不一定是不可变的。如果您正在使用具有只读接口类型的变量,则这可能只是对同一集合的众多引用之一。其他引用可以具有可变接口类型
我想编写一个将元素添加到某个集合的函数,同时在有趣的 main() 中创建一个 val someCollection: List <>。我可以通过 var someCollection: List <> = funAdd(someCollection.toMutable) 来做到这一点,但是我可以在不使用变量 var 的情况下这样做吗?
例子
fun addEl(numbers:MutableList<Int>):List<Int>{
for (i in 1..10){
numbers.add(i)
}
return numbers.toList()
}
fun main(args: Array<String>){
var readOnlyNumbers: List<Int> = emptyList()
readOnlyNumbers = addEl(readOnlyNumbers.toMutableList())
println(readOnlyNumbers.size)
}
我可以避免使用 var 和重新分配 readOnlyNumbers 吗?
解决方案
以下是不使用 var 重写代码的各种方法:
fun addEl(numbers:MutableList<Int>):List<Int>{
for (i in 1..10) {
numbers.add(i)
}
return numbers.toList()
}
fun main(args: Array<String>){
val readOnlyNumbers: List<Int> = addEl(mutableListOf())
println(readOnlyNumbers.size)
}
或者干脆
fun createEl(): List<Int> {
return (1..10).toList()
}
fun main(args: Array<String>){
val readOnlyNumbers = createEl()
println(readOnlyNumbers.size)
}
推荐阅读
- r - DT::dataTableproxy 将数据保存在表中
- javascript - npm 开始抛出错误“这与 npm 无法找到文件有关。”
- winapi - 文件句柄上的重叠读取可以同步完成吗?
- python - Python函数,它用','分割字符串并忽略':'
- r - 为什么这个循环没有被取消切换?
- c - 共享内存中字符串的动态分配
- database - 使用 bash 脚本远程连接到 Oracle DB
- amazon-web-services - Terraform aws_instance 指定登录凭据
- python - Numba 错误:没有实现函数 Function(
) 找到签名 - arduino-uno - Arduino Led Cube 5x5x5 移位寄存器 74HC595