我正在编写一段代码,需要在其中添加一个列表到另一个列表。
fun a(x:Int):List<List<Int>>{
var a = 1.rangeTo(x);
var b: List<List<Int>> = emptyList();
for (i in a){
var num1 = if(i<=3) i else 4;
var list_a= 0.rangeTo(num1 - 1);
b.add(list_a);
}
return b
}
我的问题是b.add(list_a)
在给error(unresolved reference)
。
在此功能中,如果我输入println(a(2))
输出应为[[0],[0,1]]
请帮忙。
答案 0 :(得分:3)
为unresolved reference
获取b.add()
的原因是因为您已将b
初始化为List
而不是MutableList
< / strong>。
请注意,一旦初始化,您就可以将元素添加到Kotlin中的MutableList
而不是List
中。因此,将b
的初始化更改为var b: MutableList<List<Int>> = mutableListOf()
fun a(x: Int): List<List<Int>> {
var a = 1.rangeTo(x)
var b: MutableList<List<Int>> = mutableListOf()
for (i in a) {
var num1 = if (i <= 3) i else 4
var list_a = 0.rangeTo(num1 - 1).toList()
b.add(list_a)
}
return b
}
进一步重构它,您可以在循环1..x
中使用for
并使用(0 until num1)
代替下面的0.rangeTo(num1 - 1)
fun a(x: Int): List<List<Int>> {
val listB: MutableList<List<Int>> = mutableListOf()
for (i in 1..x) {
val num1 = if (i <= 3) i else 4
val listA = (0 until num1).toList()
listB.add(listA)
}
return listB
}