首页 > 解决方案 > Kotlin RxJava2 结合最新

问题描述

我有一个可观察的列表,每个都返回,比如说,一个字符串

val list = listOf<Observable<String>>(
                Observable.fromCallable { "1" },
                Observable.fromCallable { "2" },
                Observable.fromCallable { "3" },
                Observable.fromCallable { "4" }
        )

我想将它们结合起来。

    val result: Observable<String> = Observable.combineLatest(
            list,
            Function<Array<String>, String> { results ->
                var resultString = ""
                //combine
                resultString
            })

Kotlin 向我展示了以下函数都不能被调用...错误。我看到了一些关于SAM 构造函数的帖子,但在这里我明确指定了类型。想不出怎么解决。

PS解决方法是,Function<Array<in String>, String>但随后resultsArray<Any>,但不是Array<String>

标签: androidkotlinrx-java2

解决方案


您可以在 lambda 参数本身上指定类型,例如:

Observable.combineLatest(list, Function { results: Array<in String> ->
    ...
})

您可以通过删除 SAM 构造函数并将 lambda 从参数列表中移出来进一步压缩内容combineLatest(),例如:

Observable.combineLatest(list) { results: Array<in String> ->
    ...
}

推荐阅读