最近,我遇到了一些使用以下功能的代码,但是很难理解如何使用此功能。
zip(java.lang.Iterable<? extends Observable<?>> ws, FuncN<? extends R> zipFunction)
对于Java doc,它的意思是“返回一个Observable,该Observable发出指定的合并器函数的结果,该组合器的功能依次应用于其他Observable的Iterable。我已经读过好几次了,但还是听不懂它的意思。
而且我还读到zip函数本身的意思是“通过指定的函数将多个Observable的发射合并在一起,并根据此函数的结果为每个组合发射单个项目”。
我本来以为我知道zip的功能,但是看完之后,我很困惑。 zip函数不是只返回一个值,为什么它是“ ...基于此函数结果的每个组合”?
任何人都可以用简单的术语和示例来说明上述功能以及zip的一般含义?
这里是一个例子:
可观察到的
X
代表序列a
,b
,c
。可观察到的
Y
代表序列α
,β
,γ
。使用函数
X
压缩可观察对象Y
和f
会返回一个表示序列f(a, α)
,f(b, β)
,f(c, γ)
。
如果您想要更具体的例子,
可观察到的
X
代表序列2
,3
,4
。可观察到的
Y
代表序列5
,6
,7
。使用“乘法”功能将可观察对象
X
和Y
压缩后返回表示序列10
,18
,28
。
在JavaDoc中,“指定的组合器功能”是指功能f
。在您引用的第二件事中,短语“指定功能”也指此。请注意,此函数如何组合多个项,每个可观察项(例如2
和5
)中的一项与返回的可观察项中的一项(例如10
)。
JavaDoc和您引用的第二件事中的“组合”是指您正在压缩的每个可观察对象中的项的元组,例如(2, 5)
或(3, 6)
。
请注意,zip
返回一个单一的Observable
对象,它表示值的[[sequence
Observable
对象,而您引用的第二件事描述了Observable
对象的由...表示的序列(因此,用语“针对每个组合”)。这可能就是您误解了第二节摘录说zip
返回多个值的原因。两个摘录都在说真话,但它们描述的是不同的东西。我重申:zip
返回一个single
Observable
对象,该对象表示值的[[sequence。