Как запустить несколько suspend функций по очереди в цикле
Есть небольшое кол-во suspend функций, все возвращают одинаковый тип данных, у некоторых разные параметры
suspend fun1() { return true }
suspend fun2() { return true }
suspend fun3(isYellow: Boolean) { return false }
suspend fun4() { return true }
Необходимо после каждого вызова делать проверку, и если что то вернуло false прерывать выполнение.
Хотел запихнуть все один список потом по очереди вызывать и проверять, и в принципе можно было бы, если бы все функции принимали одинаковые параметры, а так не получается.
Может кто подскажет идею или во что можно это все обернуть и в цикл засунуть?
P.S. На практике возвращается enum с большим количеством вариантов
Ответы (1 шт):
Автор решения: Eugene Krivenja
→ Ссылка
А что обернуть в лямбду чтобы скрыть разницу в параметрах? Пример:
suspend fun fun1():Boolean { return true }
suspend fun fun2():Boolean { return true }
suspend fun fun3(isYellow: Boolean):Boolean { return false }
suspend fun fun4():Boolean { return true }
suspend fun funComp(): Boolean {
val funs = listOf<() -> Boolean>(
{ fun1() }, { fun2() }, { fun3(true) }, { fun4() })
funs.forEach {
if (!it()) {
return false
}
}
return true
}