android - 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>
但随后results
会Array<Any>
,但不是Array<String>
。
解决方案
您可以在 lambda 参数本身上指定类型,例如:
Observable.combineLatest(list, Function { results: Array<in String> ->
...
})
您可以通过删除 SAM 构造函数并将 lambda 从参数列表中移出来进一步压缩内容combineLatest()
,例如:
Observable.combineLatest(list) { results: Array<in String> ->
...
}
推荐阅读
- java - 使用 WebAssembly,有没有办法获取 .jar 并现在在浏览器中运行它?
- c - 我的第二个 scanf 不工作 - 我该怎么办?
- git - Git“致命:无法读取当前工作目录:现有仓库中没有这样的文件或目录”
- python - 类和并发期货多线程
- java - 我正在学习使用 android studio 制作应用程序,所以我正在制作一个简单的计算器,但我遇到了获得正确答案的问题
- ios - 火力基地 | 如何更改 App Distribution 的 App Icon
- reactjs - 使用 SSR React 和 Node Express 配置 NGINX
- excel - 将 Workbook.SaveCopyAs 和 Workbook.SaveAs 与 OneDrive 一起使用时出现问题
- javascript - 如果变量值的差异超过 20,如何执行代码
- sass - 为什么 SASS @mixin 的顺序无关紧要?