Инициализировать список в kotlin без null и добавить в него элемент. В обход традиции l oop и определение длины списка до l oop over - PullRequest
0 голосов
/ 02 августа 2020

Таким образом создается список списка

fun searchByTaskNProcessKey(@RequestBody search: TaskSearch): Any? {
    var config: List<Any?> = listOf(addConfig(search.processKeys!![0],search.taskNames!![0]))
    for(i in  1 until (search.taskNames?.size!!)){
        config+= addConfig(search.processKeys!![i],search.taskNames!![i])
    }
    return config
}

RequestBody json:

{"taskNames": ["task1","Task2"],
"processKeys": ["key1","key2"]}

На основе processKey и taskName я пытаюсь добавить класс ProcessVariable в список конфигураций . Я пробовал несколько вещей, таких как var config:List<ProcessVariable>=toArrayList() и var config: List<ProcessVariable>? =null, но это делает список неизменяемым, и я не могу добавить новый элемент. Я пробовал MutableList, но он также вызывал ошибку. Тип List не может быть преобразован в arrayylist. Есть ли лучший способ инициализации. Перечислите, а затем добавьте к нему элемент или без использования традиционного l oop, используя сокращение kotlin в соответствии с taskName и key, предполагая, что task1 и key1 и соответствующие пары являются правильными.

1 Ответ

1 голос
/ 02 августа 2020
fun searchByTaskNProcessKey(@RequestBody search: TaskSearch) = 
    search.processKeys!!.zip(search.taskNames!!, ::addConfig)

Возвращенный список имеет длину самой короткой коллекции

...