Groovy .times {} 闭包

问题描述 投票:0回答:1

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

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

找不到相关信息,但可能性看起来太明显了

groovy closures
1个回答
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'
© www.soinside.com 2019 - 2024. All rights reserved.