如何在Java 8中使用Observable zip

问题描述 投票:0回答:1

最近,我遇到了一些使用以下功能的代码,但是很难理解如何使用此功能。

zip(java.lang.Iterable<? extends Observable<?>> ws, FuncN<? extends R> zipFunction)

对于Java doc,它的意思是“返回一个Observable,该Observable发出指定的合并器函数的结果,该组合器的功能依次应用于其他Observable的Iterable。我已经读过好几次了,但还是听不懂它的意思。

而且我还读到zip函数本身的意思是“通过指定的函数将多个Observable的发射合并在一起,并根据此函数的结果为每个组合发射单个项目”。

我本来以为我知道zip的功能,但是看完之后,我很困惑。 zip函数不是只返回一个值,为什么它是“ ...基于此函数结果的每个组合”?

任何人都可以用简单的术语和示例来说明上述功能以及zip的一般含义?

java java-8 rx-java
1个回答
1
投票

这里是一个例子:

可观察到的X代表序列abc

可观察到的Y代表序列αβγ

使用函数X压缩可观察对象Yf会返回一个表示序列f(a, α)f(b, β)f(c, γ)

如果您想要更具体的例子,

可观察到的X代表序列234

可观察到的Y代表序列567

使用“乘法”功能将可观察对象XY压缩后返回表示序列101828

在JavaDoc中,“指定的组合器功能”是指功能f。在您引用的第二件事中,短语“指定功能”也指此。请注意,此函数如何组合多个项,每个可观察项(例如25)中的一项与返回的可观察项中的一项(例如10)。

JavaDoc和您引用的第二件事中的“组合”是指您正在压缩的每个可观察对象中的项的元组,例如(2, 5)(3, 6)

请注意,zip返回一个单一的Observable对象,它表示值的[[sequence

。 JavaDoc描述了该单个Observable对象,而您引用的第二件事描述了Observable对象的由...表示的序列(因此,用语“针对每个组合”)。这可能就是您误解了第二节摘录说zip返回多个值的原因。两个摘录都在说真话,但它们描述的是不同的东西。我重申:zip返回一个

single

Observable对象,该对象表示值的[[sequence
© www.soinside.com 2019 - 2024. All rights reserved.