Kotlin:函数在谓词满足时停止迭代

时间:2019-02-25 12:42:28

标签: kotlin built-in

我正在寻找Kotlin中的一个函数,一旦满足谓词,该函数将停止迭代:

val services = listOf(service1, service2)
...
var res: Result = null
services.stopIfPredicateFulFilled { service ->
    res = service.doSomething()
    res != null
}

尽管此示例并不是很好,因为res在每次迭代中都被覆盖,但我希望意图清楚。 forEach不能像我期望的那样完成任务。所以,我想知道是否还没有其他东西。

1 个答案:

答案 0 :(得分:2)

您可以使用功能find { ... }firstOrNull { ... }(它们是等效的,只是命名不同)。他们找到满足谓词的第一个元素,然后忽略其余所有元素,返回该元素。

services.find { service ->
    res = service.doSomething()
    res != null
}