【问题标题】:RxJava Zip Observable IterablesRxJava Zip 可观察迭代
【发布时间】:2018-05-19 09:02:46
【问题描述】:

我想压缩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
}

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

【问题讨论】:

    标签: kotlin rx-java observable rx-java2


    【解决方案1】:

    zip 的函数在 RxJava 中定义为Function&lt;? super Object[], R&gt;,所以你必须指定一个对象数组,而不是List&lt;Int&gt; 数组,然后将对象数组元素转换回List&lt;Int&gt;

    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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多