首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在存储库级将多个流值作为一个对象发出?

如何在存储库级将多个流值作为一个对象发出?
EN

Stack Overflow用户
提问于 2021-02-23 05:56:03
回答 1查看 493关注 0票数 0

假设我有两个流:

代码语言:javascript
复制
val x: Flow<Long?> = dao.getValueX()
val y: Flow<Long?> = dao.getValueY()

我可以有第三个流,流z,它会将这两个流作为一对发出吗?

假设我有XYObject看起来像的XYObject()

代码语言:javascript
复制
X: Long?
Y: Long?

我想基本上发出一个z流,其中它发出由上面两个流填充的X和Y的XYObject。我实际上有3-4个我想要发射的东西,但为了例子的缘故,我把它限制在2个。

EN

回答 1

Stack Overflow用户

发布于 2021-03-24 20:54:35

您可以使用combine()变换函数:

返回一个流,它的值是由transform函数通过组合每个流最近发出的值来生成的。

source

并像这样定义z

代码语言:javascript
复制
import kotlinx.coroutines.flow.combine

data class XYObject(val x: Long?, val y: Long?)

val x: Flow<Long?> = dao.getValueX()
val y: Flow<Long?> = dao.getValueY()
val z: Flow<XYObject> = x.combine(y) { _x: Long?, _y: Long? ->
    XYObject(_x, _y)
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66324026

复制
相关文章

相似问题

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