Kotlin:满足谓词时可以停止迭代的功能



我正在寻找Kotlin中的功能,该功能一旦满足谓词,就可以停止迭代:

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

虽然此示例并不是真的很好,因为res在每次迭代中都被覆盖,但我希望意图很明确。 forEach不能像我期望的那样完成工作。所以,我想知道是否没有其他东西。

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

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

最新更新