Groovy вызов функции в замыкании

Как я могу сделать вызов функции в замыкании в Groovy? В настоящее время пытается это, но это приводит ко всем итерациям, используя значения из последнего элемента массива:

def branches = [:]
for (int i = 0; i < data.steps.size(); i++) {
    branches["${data.steps.get(i).name}"] = {
        myFunc(data.steps.get(i))
    }
}
parallel branches

1 ответ

Решение

Это обычная ошибка

Это должно работать:

def branches = data.steps.collectEntries { step ->
    [step.name, { myFunc(step) }]
}
parallel branches

Или же

def branches = data.steps.inject([:]) { map, step ->
    map << [(step.name): { myFunc(step) }]
}
Другие вопросы по тегам