@CheckReturnValue
    @SchedulerSupport(SchedulerSupport.NONE)
    public static <T, R> Single<R> zipArray(Function<? super Object[], ? extends R> zipper, SingleSource<? extends T>... sources) {
        ObjectHelper.requireNonNull(zipper, "zipper is null");
        ObjectHelper.requireNonNull(sources, "sources is null");
        if (sources.length == 0) {
            return error(new NoSuchElementException());
        }
        return RxJavaPlugins.onAssembly(new SingleZipArray<T, R>(sources, zipper));
    }
@ CheckReturnValue @ SchedulerSupport ( SchedulerSupport . NONE ) public static < T , R > Single < R > zipArray ( Function < ? super Object [ ] , ? extends R > zipper , SingleSource < ? extends T > ... sources ) { ObjectHelper . requireNonNull ( zipper , "zipper is null" ) ; ObjectHelper . requireNonNull ( sources , "sources is null" ) ; if ( sources . length == 0 ) { return error ( new NoSuchElementException ( ) ) ; } return RxJavaPlugins . onAssembly ( new SingleZipArray < T , R > ( sources , zipper ) ) ; }
Waits until all SingleSource sources provided via an array signal a success
value and calls a zipper function with an array of these values to return a result
to be emitted to downstream.
<p>
If the array of {@link SingleSource}s is empty a {@link NoSuchElementException} error is signalled immediately.
<p>
Note on method signature: since Java doesn't allow creating a generic array with {@code new T[]}, the
implementation of this operator has to create an {@code Object[]} instead. Unfortunately, a
{@code Function<Integer[], R>} passed to the method would trigger a {@code ClassCastException}.

<p>
<img width="640" height="380" src="https://raw.github.com/wiki/ReactiveX/RxJava/images/rx-operators/zip.png" alt="">
<p>
If any of the SingleSources signal an error, all other SingleSources get disposed and the
error emitted to downstream immediately.
<dl>
<dt><b>Scheduler:</b></dt>
<dd>{@code zipArray} does not operate by default on a particular {@link Scheduler}.</dd>
</dl>
@param <T> the common value type
@param <R> the result value type
@param sources the array of SingleSource instances. An empty sequence will result in an
{@code onError} signal of {@link NoSuchElementException}.
@param zipper the function that receives an array with values from each SingleSource
and should return a value to be emitted to downstream
@return the new Single instance
@since 2.0