关于kotlin:RxJava Zip Observable Iterables

RxJava Zip Observable Iterables

我想压缩Observable>的列表。

1
2
3
4
5
6
7
8
9
10
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
}

即使listMerger定义了输入和输出,zip也不接受。


zip的函数在RxJava中定义为Function,因此您必须指定对象数组而不是List数组,然后将对象数组元素转换回List

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
}