使用Android Studio 3.0在Kotlin中使用RxJava zipWith IDE

我想创建一个Observable,它从Observable中发出一些包含Interval Observable对象列表的项目,这样第一个observable中的项目就会有一些时间延迟.
这是我的实现:
val just1 = ArrayList<SomeClass1>()

填充一些项目

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> { someClass1 -> Log.v("someClass1",someClass1.toString()) })

但是,IDE,Android Studio 3.0以红色方式强调了zipwith运算符,并说:

None of the following functions can be called with the arguments supplied.
zipwith(((observer: Observer) → Unit)!,((t1: SomeClass1,t2: Long) → R)!) where R cannot be inferred; U = Long for fun zipwith(other: ((observer: Observer) → Unit)!,zipper: ((t1: SomeClass1,t2: U) → R)!): Observable! defined in io.reactivex.Observable
zipwith(ObservableSource!,BiFunction!) where R cannot be inferred; U = Long! for fun zipwith(other: ObservableSource!,zipper: BiFunction!): Observable! defined in io.reactivex.Observable
zipwith((Mutable)Iterable!,BiFunction!) where U,R cannot be inferred for fun zipwith(other: (Mutable)Iterable!,t2: Long) → R)!) where R cannot be inferred; U = Long for fun zipwith(other: (Mutable)Iterable!,t2: U) → R)!): Observable! defined in io.reactivex.Observable

怎么了?我刚从java类转换了这个代码,其中一切都是正确的

解决方法

Kotlin无法推断出zipwith lambda中的类型.

使用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())

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...