提问人:Andrey Kudin 提问时间:3/16/2023 最后编辑:Andrej IstominAndrey Kudin 更新时间:3/17/2023 访问量:54
Groovy .times {} 闭包
Groovy .times {} closure
问:
我们是否有一些东西可以检测最后一次迭代画架,例如:
int num = 5
num.times {
if (**IS_LAST_ITERATION**) println 'finally'
}
没有找到这方面的信息,但这种可能性看起来太明显了,不可能存在
答:
2赞
injecteer
3/16/2023
#1
it
或者显式参数包含计数器:
int num = 5
num.times{ if( num - 1 == it ) println 'finally' }
更新:
Groovy 的迭代方法不提供闭包等参数,只提供迭代对象和索引。first
last
对于您的特殊情况,您可以将处理分成 2 个块,并为最后一次处理提供自定义处理:
int num = 5
( num - 1 ).times{
doStuff()
}
// now the last iteration
doStuff()
println 'finally'
评论
0赞
Andrey Kudin
3/17/2023
在这种情况下,我会说,但我想知道是否有没有数据检查的解决方案?if (it == num) println 'finally'
1赞
injecteer
3/18/2023
it == num
从未达到
评论
(1..num).each { it -> ...
可以说比使用时间更具可读性