6

我的管道中有一个简单的 groovy 列表,其中添加了一些地图:

def componentList = []

def componentMapEntry1 = [:]
componentMapEntry1['componentName']="Dashboard_Core"
componentList << componentMapEntry1

def componentMapEntry2 = [:]
componentMapEntry2['componentName']="Dashboard_Equities"
componentList << componentMapEntry2

def cme3 = [:]
cme3["componentName"] = "home"
componentList << cme3

执行作业时,我验证大小

echo "size of list "+componentList.size()

...

[Pipeline] echo
size of list 3

我可以把它打印出来

println componentList

...

[Pipeline] echo
[{componentName=Dashboard_Core}, {componentName=Dashboard_Equities}, {componentName=home}]

我可以做一个 for 循环并迭代列表

for (i = 0; i <componentList.size(); i++) {
    println componentList[i]
}

...

[Pipeline] echo
{componentName=Dashboard_Core}
[Pipeline] echo
{componentName=Dashboard_Equities}
[Pipeline] echo
{componentName=home}

到目前为止一切都很好。

当我尝试使用标准 groovy 迭代器时出现问题:

componentList.each {
    println "adding "+it.componentName
}

在这种情况下,我只得到第一个元素

[Pipeline] echo
adding Dashboard_Core

为什么我只能在这里得到第一个元素?我已经尝试过几次并且使用 .each() 似乎只返回第一个元素。当我在 groovy 命令行上运行相同的代码时,它自然会按照 groovy 的预期进行迭代。.each{ } 函数是否以某种方式被覆盖?

4

1 回答 1

8

闭包上的each方法还不能在流水线脚本中工作。正在进行修复。同时使用 C 风格的for循环。

于 2016-04-03T14:30:30.930 回答