我正在寻找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
}