【发布时间】:2021-10-28 01:49:23
【问题描述】:
我们知道,在 Kotlin 中可以创建不同类型的可变列表的可变列表,例如:
val list = mutableListOf(
MutableList<Int>(3) { 0 },
MutableList<String>(2) { "aaa" }
)
并且可以(如预期)更改主列表,例如:
list.add(MutableList<Double>(4) { 0.0 }
经过这个操作,println(list)的结果如下:
[[0, 0, 0], [aaa, aaa], [0.0, 0.0, 0.0, 0.0]]
但不可能更改子列表,
例如操作:
list[0][1] = 2
list[1].add("bbb")
产生错误信息:
整数文字不符合预期的类型 Nothing
和
类型不匹配:推断的类型是字符串,但没有任何预期
分别...
我的问题是:
为什么这些嵌套子列表 - 声明为可变 - 表现得像不可变???
有没有改变这些嵌套子列表的方法???
顺便说一句...
我已经检查过,声明为可变的嵌套子列表在它们都是相同类型时表现得非常正常。
在这种情况下,可以 - 正如预期的那样 - 更改那些嵌套的子列表......
【问题讨论】:
标签: kotlin mutability mutablelist