【发布时间】:2018-09-26 12:23:12
【问题描述】:
我有一个可观察的列表,每个都返回一个字符串
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 构造函数 的帖子,但这里我明确指定了类型。 不知道怎么解决。
P.S. 解决方法是 Function<Array<in String>, String>,但随后 results 将是 Array<Any>,而不是 Array<String>。
【问题讨论】:
-
会推荐使用
RxKotlingithub.com/ReactiveX/RxKotlin ...除此之外,它还有许多帮助方法来解决 SAM 歧义问题。 -
@JohnO'Reilly,但如果我不想要怎么办)
-
这只是一个建议......你不必做任何你不想做的事情:)
-
你试过没有类型说明吗? val 结果:Observable
= Observable.combineLatest(list) { results -> "" } -
@AndreyTurkovsky 是的,结果是 Array
在这种情况下