Я ищу более чистый способ создания условного flatMap()
, я прочитал this, но у меня возникли проблемы с его применением в моем коде:
// given variables for the sake of simplicity
val stringSingle = Single.just("dog")
val isCatEat = Single.just(true)
val feedCat = Single.just(true)
// example
stringSingle
.flatMap { string ->
if (string == "cat") {
return@flatMap isCatEat()
.flatMap { isCatEat ->
if (isCatEat) { // if cat already ate, proceed immediately
Single.fromCallable { true }
} else { // if not, feed cat
feedCat()
}
}
} else {
Single.fromCallable { false }
}
}
как вы можете видеть (ну, код очень уродлив, вложенность тьфу), я хочу избежать вызова feedCat()
, сначала проверив его, если кошка уже съела. У меня возникли проблемы с применением функции compose()
, так как я не могу воспроизвести свое состояние.