2016-06-14 22 views
2

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 

答えて

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) }] 
} 
+0

残念ながら、私はJenkinsがcollectEntriesの私にスクリプトのセキュリティエラーを与えているので、それをテストすることはできません私はそれをホワイトリストに入れることはできませんが、私はそれが動作することを疑うことはありません。リンクはとても便利でした。ありがとう! –

+0

'inject'を使ったバージョンを追加しました –

関連する問題