首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >groovy闭包引用循环迭代计数器的原因

groovy闭包引用循环迭代计数器的原因
EN

Stack Overflow用户
提问于 2017-07-07 09:17:52
回答 1查看 99关注 0票数 0

我想知道为什么下面两个片段输出不同的结果。看起来迭代计数器是由闭包处理的特例。

代码语言:javascript
复制
int i = 1
def closures = (1..3).collect {
    return { println i; ++i }
}

for (int j = 0; j < 3; ++j) {
    closures += { println j }
}

closures*.call()

1
2
3
3
3
3
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-08 09:23:05

这是一个何时更新变量的问题

在第一个示例中,i只在执行闭包时递增,因此即使每个闭包绑定到同一个i实例,每个输出也是不同的。

在第二个示例中,j在闭包之外递增,因此在运行它们时,for循环已经完成,j的值为3

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44967051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档