Kotlin: функция для остановки итерации, когда предикат удовлетворен - PullRequest
0 голосов
/ 25 февраля 2019

Я ищу функцию в Kotlin, которая останавливает итерацию после выполнения предиката:

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

Хотя этот пример не очень хорош, поскольку res перезаписывается в каждой итерации, я надеюсь, чтоНамерение ясно.forEach не делает работу так, как я ожидаю.Итак, мне было интересно, если нет ничего другого.

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете использовать функции find { ... } и firstOrNull { ... } (они эквивалентны, просто названы по-разному).Они находят первый элемент, удовлетворяющий предикату, и возвращают этот элемент, игнорируя все оставшиеся элементы.

services.find { service ->
    res = service.doSomething()
    res != null
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...