访问groovy闭包之外的变量

时间:2011-08-18 22:31:27

标签: groovy closures

我在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))
        }
    }


1 个答案:

答案 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