Ste*_*ang 5 observable kotlin rx-java rx-java2
我想压缩一个Observable<List<Int>>.
fun testObservablezip() {
val jobs = mutableListOf<Observable<List<Int>>>()
for (i in 0 until 100 step 10) {
val job = Observable.fromArray(listOf(i + 1, i + 2, i + 3))
jobs.add(job)
}
val listMerger = Function<Array<List<Int>>, List<Int>> { it.flatMap { it } }
Observable.zip(jobs, listMerger) // No valid function parameters
}
Run Code Online (Sandbox Code Playgroud)
即使listMerger定义了它的输入和输出,zip也不接受它。
zip的函数是在 RxJava 中定义的,Function<? super Object[], R>因此您必须指定一个对象数组,而不是一个List<Int>数组,然后将对象数组元素转换回List<Int>:
import io.reactivex.Observable
import io.reactivex.functions.Function;
fun testObservablezip() {
val jobs = mutableListOf<Observable<List<Int>>>()
for (i in 0 until 100 step 10) {
val job = Observable.fromArray(listOf(i + 1, i + 2, i + 3))
jobs.add(job)
}
val listMerger = Function<Array<Any>, List<Int>> {
it.flatMap { it as List<Int> } }
Observable.zip(jobs, listMerger) // No valid function parameters
}
Run Code Online (Sandbox Code Playgroud)