Skip to content

3.x: improve combineLatest method names #6634

Closed

Description

@vanniktech

Calling combineLatest from Kotlin is a bit awkward. The function has a lot of different parameters, including Iterable, Array as well as 2-x call sites for passing multiple Observables.

Is it possible to prefix these so we have some kind of combineLatestFromIterable which takes the Iterable<T>:

-public static <T, R> Observable<R> combineLatest(Iterable<? extends ObservableSource<? extends T>> sources, Function<? super Object[], ? extends R> combiner) {
+public static <T, R> Observable<R> combineLatestFromIterable(Iterable<? extends ObservableSource<? extends T>> sources, Function<? super Object[], ? extends R> combiner) {

and then combineLatest which takes the 2-x call sites.

public static <T1, T2, R> Observable<R> combineLatest(
            ObservableSource<? extends T1> source1, ObservableSource<? extends T2> source2,
            BiFunction<? super T1, ? super T2, ? extends R> combiner) {

The array call we could call combineLatestFromArray.

-public static <T, R> Observable<R> combineLatest(ObservableSource<? extends T>[] sources, Function<? super Object[], ? extends R> combiner) {
+public static <T, R> Observable<R> combineLatestFromArray(ObservableSource<? extends T>[] sources, Function<? super Object[], ? extends R> combiner) {

What should we do with?

public static <T, R> Observable<R> combineLatest(Function<? super Object[], ? extends R> combiner, int bufferSize, ObservableSource<? extends T>... sources) {

Is it really required? Callers could just use the array overload.

combineLatestDelayError is equivalent and could get the method name improvements as well.

Other methods, such as concat/merge could benefit from this change too.

Activity

  1. akarnokd commented on Aug 27, 2019

    @akarnokd
    Member

    combineLatestArray would be reasonable and match the other xArray method names. What's the conflict between combineLatest(Iterable, F) and combineLatest(O1, O2, F2)?

    The varargs variant could be removed.

  2. added this to the 3.0 milestone on Aug 27, 2019
  3. vanniktech commented on Aug 27, 2019

    @vanniktech
    CollaboratorAuthor

    There should not be any issues with combineLatest(Iterable, F) and combineLatest(O1, O2, F2). I'd just go for consistency. Looking at startWithIterable.

  4. akarnokd commented on Aug 27, 2019

    @akarnokd
    Member

    startWithIterable was disambiguated due to startWith(Publisher) and/or startWith(T) so I'd say is an exception. So if the main trouble is with combineLatest(O[], F) then let's rename that to combineLatestArray.

    zip could use some name clarification too. There is zip(Iterable(P), F), zipIterable(Iterable(P), bool, int, F), zipArray(F, O...), zip(P(P)).

  5. vanniktech commented on Aug 28, 2019

    @vanniktech
    CollaboratorAuthor

    Closed by #6635 & #6640

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions