RxKotlin“ withLatestFrom(...)”编译错误:没有足够的信息来推断类型变量R

时间:2019-07-16 18:41:56

标签: kotlin rx-kotlin

1)下面的代码无法编译并出现错误:“信息不足,无法推断类型变量R”

keywordChanges
  .withLatestFrom(searchParamsSubject)
  .subscribe { (keyword, searchParams) ->
     ...
  }

2)下面的代码可以编译和运行,但是我希望不要有空的subscribe()并且不要在合并器函数中添加副作用。

keywordChanges
  .withLatestFrom(searchParamsSubject) { keyword, searchParams ->
    searchParamsSubject.onNext(searchParams.copy(keyword = keyword))
  }
  .subscribe()

3)下面是RxKotlin库中的代码,我正在尝试调用1)

/**
 * Emits a `Pair`
 */
inline fun <T, U, R> Observable<T>.withLatestFrom(other: ObservableSource<U>): Observable<Pair<T,U>>
        = withLatestFrom(other, BiFunction{ t, u -> Pair(t,u)  }

如何修改1)中的代码以使其正常工作?

1 个答案:

答案 0 :(得分:1)

您必须专门告诉编译器正在使用哪些类。

        val o1 = Observable.just(1)
        val o2 = Observable.just(2)

        o1.withLatestFrom(o2, BiFunction { t1 : Int, t2 : Int ->  t1 to t2})
            .subscribe { (one, two) -> }

或者,RxKotlin扩展功能库为您处理此问题。 https://github.com/ReactiveX/RxKotlin