好的,我确定我在这里做错了什么。
result = []
for (aMp in arMap) {
println("0 " + result)
println("1 " + aMp)
println("2 " + delegate.findSingleMap(aMp))
result.addAll(delegate.findSingleMap(aMp))
println "3 " + result
}
return result
println结果如下:(我在arMap中有2个元素,所以它打印4个值2次)
0 []
1 [ID:XXX, Type:4]
2 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
3 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
0 [[First:21/Nov/2013, Type:4, error code:SXR07, ID:XXX, Test ID:5]]
1 [ID:YYY, Type:4]
2 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]
3 [[First:12/Oct/2012, Type:4, error code:SXR07, ID:YYY, Test ID:6]]
正如您所看到的,findSingleMap函数正常工作,但第二次使用AddAll时,我的结果数组松开了值XXX。
我做错了什么?
答案 0 :(得分:1)
如OP中所述,评论方法findSingleMap
修改了(全局)result
变量。
for (aEl in map) {
result = result.findAll { it[aEl.key] == aEl.value }
}
return result
不在前面编写def
变量声明它(在简单脚本中)全局,这可能会导致像这样的奇怪行为。所以不要这样做,除非你必须使用codegolf。