Kotlin列表和Mutablelist:两个不同的引用指向同一收集对象



您可以举一个引号的例子:

使用收集界面时要牢记的关键是,只读的收藏不一定是不可变的。如果您使用具有仅读取接口类型的变量,那么这可能只是对同一集合的众多参考之一。其他参考可以具有可变的接口类型

我想编写一个函数,在创建val somecollection时,将元素添加到某些集合中:list<>在Fun Main((中。我可以通过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和放心读取透明仪?

这是在不使用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)
}

回答此部分:

您可以举个例子:

使用收集界面时要牢记的关键是,只读的收藏不一定是不可变的。如果您使用具有仅读取接口类型的变量,那么这可能只是对同一集合的众多参考之一。其他参考可以具有可变的接口类型

这只是在谈论这样的情况:

val mutableList: MutableList<Int> = mutableListOf<Int>()
val list: List<Int> = mutableList
println(list) // []
mutableList.add(0)
println(list) // [0]

即使list具有List<Int>类型而不是MutableList<Int>,其内容已更改。

请注意,这是

的示例

我想编写一个函数,将元素添加到某些集合中,而在Fun Main((中创建val someCollection: List <>

也是如此,但我不建议编写此代码;使用JB Nizet的一种版本。

相关内容

  • 没有找到相关文章

最新更新