首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Single<List<Maybe<Book>>>转换为Single<List<Book>>

将Single<List<Maybe<Book>>>转换为Single<List<Book>>
EN

Stack Overflow用户
提问于 2020-12-09 20:55:24
回答 1查看 29关注 0票数 0

有人能帮帮忙吗?

我有这些函数

代码语言:javascript
复制
fun getBooks(): Single<List<Book>> {
    return getCollections()
        .map {
            it.map(::collectonToBook)
        }
}

fun getCollections(): Single<List<Collection>> {
   return db.fetchCollections()
       .filter(::isBook)
}

fun collectonToBook(collection: Collection): Maybe<Book> {
    return collection.toBook()
}

问题是当我需要Single<List<Book>>时,getBooks会返回Single<List<Maybe<Book>>>。我是否可以在不调用blockingGet的情况下在流中执行此操作?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-09 21:05:59

试试这个:

代码语言:javascript
复制
getCollections()                        // Single<List<Collection>>
.flattenAsFlowable { it }               // Flowable<Collection>
.concatMapMaybe { collectonToBook(it) } // Flowable<Book>
.toList()                               // Single<List<Book>>

换句话说,将内部的List解包到它的元素中,将Collection转换成Book,连接它们各自的Maybe源,最后再将Book收集到List中。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65217193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档