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

标签 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)下面是我试图在1)中调用的RxKotlin库中的代码
/**
 * 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)中的代码以使其正常工作?

最佳答案

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

        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

关于kotlin - RxKotlin “withLatestFrom(…)”编译错误:没有足够的信息来推断类型变量R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57063614/

相关文章:

rx-java - 链 Completable 到 Observable 流

kotlin - RxJava 2 在单元测试中覆盖 IO 调度程序

kotlin - 需要 <对象> 并找到 <对象>?

enums - Kotlin 中的枚举注解

java - Android 版 Tomtom map sdk 无法加载图 block

Kotlin - 没有 body 的类有什么用?

java - Observable#take(Long) 没有在 RxJava 中返回所需的项目大小

android - "Cannot access database on the main thread since it may potentially lock the UI for a long period of time"启动协程时出错

kotlin - 如何在 micronaut 上启用 swagger UI?

java - 注入(inject)构造函数和伴生对象