我在eachLine闭包中逐行处理日志文件,需要记住上一次迭代的值。问题是循环内“currentCampaign”变量的范围明显不同于循环外部,因此不会在每次迭代之间记住它。 (基本上,一行将具有广告系列ID,然后我向前扫描包含“redirectLink”的下一个类似实例。我需要记住文件中最后一个campaignId的内容)
def currentCampaign = ""
file.eachLine{ line->
if(line.indexOf("campaignId") != -1){
currentCampaign = extractCampaign(line)
}
if(line.indexOf("redirectlink") != -1){
recordRedirect(currentCampaign, extractRedirectLink(line))
}
}
答案 0 :(得分:2)
你试过一个更简单的例子吗?至少在groovy 1.8.0中,currentCampaign的范围应该扩展到整个示例中。
def last = 0
[5, 3, 9].each {
def result = last + it
last = it
result
}
println last // prints 9