RxJava zip使用Android Studio 3.0在Kotlin中遇到IDE错误
我想用Interval Observable创建一个Observable,它包含Observable,Observable包含Observable对象的列表,这样,来自第一个Observable的Observable将会有一定的时间延迟。 这是我的实现:
val just1 = ArrayList()
填充一些项目
fun populateJust1() { just1.add(SomeClass1("23", 23)) just1.add(SomeClass1("24", 24)) just1.add(SomeClass1("25", 25)) } populateJust1()
并以间隔Observable压缩
Observable.fromIterable(just1) .zipWith(Observable.interval(2, TimeUnit.SECONDS)) { item: SomeClass1, interval: Long -> item } .subscribe(Consumer { someClass1 -> Log.v("someClass1", someClass1.toString()) })
然而,IDE,Android Studio 3.0以zipWith运算符为红色,并表示:
所提供的参数都不能调用以下函数。 (((观察者:观察者)→单位)!,((t1:SomeClass1,t2:长)→R)!)其中R不能被推断; U = Long for fun zipWith(other:((observers:Observer)→Unit)!,zipper:((t1:SomeClass1,t2:U)→R)!):Observable! 在io.reactivex.Observable zipWith(ObservableSource!,BiFunction!)中定义,其中R无法推断; U =长! 为了好玩zipWith(其他:ObservableSource!,拉链:BiFunction!):可观察! 定义在io.reactivex.Observable zipWith((Mutable)Iterable!,BiFunction!)其中U,R不能被推断为有趣的zipWith(other:(Mutable)Iterable!,zipper:BiFunction!):Observable! 定义在io.reactivex.Observable zipWith((Mutable)Iterable!,((t1:SomeClass1,t2:Long)→R)!)其中R不能被推断; U = Long for fun zipWith(other:(Mutable)Iterable!,zipper:((t1:SomeClass1,t2:U)→R)!):Observable! 在io.reactivex.Observable中定义
哪里不对? 我刚刚从Java类转换了这个代码,一切都是正确的
Kotlin不能推断出这个zipWith
types。
使用BiFunction
而不是lambda:
data class SomeClass(val a: String, val b: Int) val list = listOf(SomeClass("1", 1), SomeClass("2", 2)) Observable .fromIterable(list) .zipWith(Observable.interval(2, TimeUnit.SECONDS), BiFunction { item: SomeClass, _: Long -> item }) .subscribe { Log.v("someClass", it.toString())
你也可以使用RxKotlin ,附带一些小的包装来隐藏这种噪音。 下面是Single.zipWith的一个例子:
fun Single.zipWith(other: SingleSource): Single> = zipWith(other, BiFunction { t, u -> Pair(t,u) })
- 我怎样才能引用从Java的伴侣对象?
- 带有Jetty + Jersey的Spring Boot始终显示404
- 在Android 4.4上添加Kotlin配置后,DexFile不包含生成的类
- 我怎样才能实例java类像A:扩展B在kotlin中实现C.
- Kotlin:MutableList中的java.lang.UnsupportedOperationException添加元素
- 用readLine()方法分割Kotlin字符串
- 是否有可能限制开关使用kotlin / JAVA中的特定情况?
- 如何获取由javareflection在kotlin扩展中声明的属性或函数
- 使Java PriorityQueue成为一个稳定的优先级队列