何时使用zip()而不是zipWith()RxJava

Stu*_*lla 11 java rx-java

在RxJava中,成对组合与zip()vs. 是否存在语义差异zipWith(?静态zip和.zip之间的选择是纯粹的风格吗?

aka*_*okd 19

方便和背景.

zip当您已经组装了两个源并且现在要将它们压缩在一起时,静态非常有用.大多数时候,他们自己是长链或来自各地.

Observable<T1> source1 = op().op().op().op().op();
Observable<T2> source2 = op().op().op().op().op();

Observable.zip(source1, source2, (a, b) -> a + b);
Run Code Online (Sandbox Code Playgroud)

zipWith当其中一个源更长而另一个源更短时,该实例很有用.此时,使用较短的拉链更方便.

public Observable<R> withIndex(Observable<T> source, Func2<Integer, T, R> func) {
    return source.zipWith(Observable.range(0, Integer.MAX_VALUE),
         (t, idx) -> func(idx, t));
}
Run Code Online (Sandbox Code Playgroud)