src/main/java/io/reactivex/Observable.java
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, R> Observable<R> zipWith(Iterable<U> other,  BiFunction<? super T, ? super U, ? extends R> zipper) {
        ObjectHelper.requireNonNull(other, "other is null");
        ObjectHelper.requireNonNull(zipper, "zipper is null");
        return RxJavaPlugins.onAssembly(new ObservableZipIterable<T, U, R>(this, other, zipper));
    }
@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public final <U, R> Observable<R> zipWith(Iterable<U> other,  BiFunction<? super T, ? super U, ? extends R> zipper) {
        ObjectHelper.requireNonNull(other, "other is null");
        ObjectHelper.requireNonNull(zipper, "zipper is null");
        return RxJavaPlugins.onAssembly(new ObservableZipIterable<T, U, R>(this, other, zipper));
    }
@ CheckReturnValue @ SchedulerSupport ( SchedulerSupport . NONE ) public final < U , R > Observable < R > zipWith ( Iterable < U > other , BiFunction < ? super T , ? super U , ? extends R > zipper ) { ObjectHelper . requireNonNull ( other , "other is null" ) ; ObjectHelper . requireNonNull ( zipper , "zipper is null" ) ; return RxJavaPlugins . onAssembly ( new ObservableZipIterable < T , U , R > ( this , other , zipper ) ) ; }
Returns an Observable that emits items that are the result of applying a specified function to pairs of
values, one each from the source ObservableSource and a specified Iterable sequence.
<p>
<img width="640" height="380" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/zip.i.png" alt="">
<p>
Note that the {@code other} Iterable is evaluated as items are observed from the source ObservableSource; it is
not pre-consumed. This allows you to zip infinite streams on either side.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code zipWith} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>

@param <U>
the type of items in the {@code other} Iterable
@param <R>
the type of items emitted by the resulting ObservableSource
@param other
the Iterable sequence
@param zipper
a function that combines the pairs of items from the ObservableSource and the Iterable to generate
the items to be emitted by the resulting ObservableSource
@return an Observable that pairs up values from the source ObservableSource and the {@code other} Iterable
sequence and emits the results of {@code zipFunction} applied to these pairs
@see <a href="http://reactivex.io/documentation/operators/zip.html">ReactiveX operators documentation: Zip</a>
Returns an Observable that emits items that are the result of applying a specified function to pairs of values one each from the source ObservableSource and a specified Iterable sequence . <p > <img width = 640 height = 380 src = https : // raw . github . com / wiki / ReactiveX / RxJava / images / rx - operators / zip . i . png alt = > <p > Note that the { @code other } Iterable is evaluated as items are observed from the source ObservableSource ; it is not pre - consumed . This allows you to zip infinite streams on either side . <dl > <dt > <b > Scheduler : < / b > < / dt > <dd > { @code zipWith } does not operate by default on a particular { @link Scheduler } . < / dd > < / dl >