Groovy .times {} 闭包

Groovy .times {} closure

提问人:Andrey Kudin 提问时间:3/16/2023 最后编辑:Andrej IstominAndrey Kudin 更新时间:3/17/2023 访问量:54

问:

我们是否有一些东西可以检测最后一次迭代画架,例如:

int num = 5
num.times {
    if (**IS_LAST_ITERATION**) println 'finally'
}

没有找到这方面的信息,但这种可能性看起来太明显了,不可能存在

时髦 的开合

评论

2赞 tim_yates 3/16/2023
(1..num).each { it -> ...可以说比使用时间更具可读性

答:

2赞 injecteer 3/16/2023 #1

it或者显式参数包含计数器:

int num = 5
num.times{ if( num - 1 == it ) println 'finally' }

更新:

Groovy 的迭代方法不提供闭包等参数,只提供迭代对象和索引。firstlast

对于您的特殊情况,您可以将处理分成 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从未达到