在闭包中调用Groovy函数

时间:2016-06-14 21:36:17

标签: jenkins groovy jenkins-workflow jenkins-pipeline

如何在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 个答案:

答案 0 :(得分:4)

那是common gotcha

这应该有效:

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

或者

def branches = data.steps.inject([:]) { map, step ->
    map << [(step.name): { myFunc(step) }]
}