Kotlin协程和Arrow是避免嵌套平面图的好方法,在Kotlin中引入了一元理解。然而,Kotlin的Flow
类型仍然依赖于声明性平面映射,因此我们进入了直接风格和声明性风格的混合:
override suspend fun findAll(page: Pageable): Either<BusinessException, Flow<PageElement<ClientOut>>> = either {
val count = clientRepository.count().awaitSingle().bind()
return clientRepository.findByIdNotNull(page).asFlow()
.flatMapMerge { client ->
flow { emit(mapDetailedClientOut(client)) }
}
}
CCD_ 2已经被束缚在CCD_。然而,似乎没有办法对Flow
做同样的事情,迫使我们嵌套一个flatmapMerge()
。
有没有办法做到这一点,或者计划在不久的将来以某种方式将其纳入其中?
遗憾的是,目前没有办法为KotlinXFlow
数据类型建立综合,因为Kotlin中的Coroutines只支持单次发射/bind
。
因此,只能为具有0..1
元素(如Either
或Nullable
(的数据类型构建comprension,而不能为Flow
或List
数据类型之类的0..N
构建comprensions。