gpt4 book ai didi

groovy - 您能摆脱Groovy “each”的关闭吗?

转载 作者:行者123 更新时间:2023-12-02 14:50:40 25 4
gpt4 key购买 nike

是否可以从Groovy break生成.each{Closure},还是应该改用经典循环?

最佳答案

不,您不能在不引发异常的情况下中止“每个”。如果希望中断在特定条件下中止,则可能需要经典循环。

另外,您可以使用“查找”闭包代替每个闭包,并在需要休息时返回true。

此示例在处理整个列表之前将中止:

def a = [1, 2, 3, 4, 5, 6, 7]

a.find {
if (it > 5) return true // break
println it // do the stuff that you wanted to before break
return false // keep looping
}

版画
1
2
3
4
5

但不会打印6或7。

使用接受闭包的自定义中断行为,编写自己的迭代器方法也非常容易:
List.metaClass.eachUntilGreaterThanFive = { closure ->
for ( value in delegate ) {
if ( value > 5 ) break
closure(value)
}
}

def a = [1, 2, 3, 4, 5, 6, 7]

a.eachUntilGreaterThanFive {
println it
}

同时打印:
1
2
3
4
5

关于groovy - 您能摆脱Groovy “each”的关闭吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31599691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com