【发布时间】:2021-03-27 08:10:38
【问题描述】:
编辑问题:
def responseTemp = []
def response = [:]
loop1.each { row1 ->
loop2.each (row2 ->
loop3.each {row3 ->
loop4.each {row4 ->
response << ['field1' : 'row1.value1']
response << ['field2' : 'row2.value1']
response << ['field3' : 'row3.value1']
responseTemp.add(response)
}
}
}
}
println (responseTemp)
预期结果是我应该得到所有响应(我的运行 10 次)所以应该在 responseTemp 中看到所有 10 个响应。但我看到的是,如果在 responseTemp 中只有第 10 次响应 10 次。
当我们迭代并最终返回时,如何将所有响应添加到 responseTemp 中。
【问题讨论】:
-
为什么要重用列表的名称作为闭包变量?除此之外,
response << ['key' : "value"]最终会在response中得到一个值,即使你运行它一百万次。 -
我基本上是在尝试将所有响应保存在一个列表中,并在循环完成后传递它
-
但在尝试这样做时,我看到的只是最后一个响应重复了 no 。循环运行的次数
-
@ernest_k :有没有办法可以将所有这些响应保存到另一个列表中,这样我就不会在循环时丢失它们?我可以在循环结束后使用它
-
您很可能会丢失它们,因为您一遍又一遍地将它们添加到同一个地图 (
response) - 但完全不清楚您要追求什么 - 此代码示例到目前为止从真正的问题中抽象出来,很难理解(至少对我来说)。您能否提供一个最小的可行示例(使用一些虚拟值定义 list[123],不要总是将相同的[key: "value"]添加到地图中,而是添加一些真实的东西,最后说明您期望输入的结果是什么.
标签: groovy