这是我的实现:
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
解决方法
使用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())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。