我正在寻找Kotlin中的一个函数,一旦满足谓词,该函数将停止迭代:
val services = listOf(service1, service2)
...
var res: Result = null
services.stopIfPredicateFulFilled { service ->
res = service.doSomething()
res != null
}
尽管此示例并不是很好,因为res
在每次迭代中都被覆盖,但我希望意图清楚。
forEach
不能像我期望的那样完成任务。所以,我想知道是否还没有其他东西。
答案 0 :(得分:2)
您可以使用功能find { ... }
和firstOrNull { ... }
(它们是等效的,只是命名不同)。他们找到满足谓词的第一个元素,然后忽略其余所有元素,返回该元素。
services.find { service ->
res = service.doSomething()
res != null
}