Добавление списка в конец другого списка - PullRequest
2 голосов
/ 20 июня 2020

Я пишу фрагмент кода, в котором мне нужно добавить список в другой список.

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]] Пожалуйста, помогите.

1 Ответ

3 голосов
/ 20 июня 2020

Причина, по которой вы получаете unresolved reference для b.add(), заключается в том, что вы инициализировали b как List вместо MutableList.

Пожалуйста обратите внимание, что после инициализации вы можете добавлять элементы в MutableList, но не в List в Kotlin. Следовательно, измените вашу инициализацию 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 l oop и (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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...