Kotlin ярлык для присвоения значения переменной с помощью функции потока или другого - PullRequest
0 голосов
/ 01 августа 2020

for (i in 0 until result.size){ result[i].config= addConfig(taskNames!![i],processKeys!![i]) }

Здесь результат - это список класса, который имеет конфигурацию datamember, а tasNames и processKeys - это список строк. Есть ли способ в kotlin сопоставить result.config с соответствующими taskNames и processKeys без использования традиционного l oop и указания длины результата. Я новичок в kotlin.

class Process {
var processKey: String? = null
var task: List<Task>? = null}

class Task {
var taskName: String? = null
var processVariables: List<ProcessVariable>? = null}

class ProcessVariable {
var name: String? = null
var label: String? = null
var applicableValue: List<String>? = null}

Результат уже присутствует в конфигурации datamember pf type ProcessVariable

1 Ответ

1 голос
/ 01 августа 2020

Если я правильно понимаю вашу проблему, вам нужно объединить 3 списка. Так что перебор списков может быть проще для понимания, чем какой-нибудь хитрый способ преобразования списков.

Вы можете избавиться от традиционного для l oop, поэтому вам не нужно вычислять размер l oop:

result.forEachIndexed { 
    i, resultData -> resultData.config = addConfig(taskNames[i], processKeys[i])
}

Если вы хотите объединить два списка, вы можете использовать метод zip:

val configList = taskNames.zip(processKeys) {tsk, prc -> addConfig(tsk, prc)}

В вашем примере объект результата уже существовал . Может, проще создать новые объекты результатов:

val results = configList.map { 
    Result(config = it)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...