RxJava Kotlin 如何从单个可观察对象<String>中获取分离的对象



RxJava Kotlin flatmap 不要从拆分字符串中返回分离的对象。 相反,它返回列表

val source: Observable<String> = Observable.just("521934/2342/FOXTROT")
.flatMap{Observable.fromArray(it.split("/"))}
.subscribe{Log.d(TAG, "$it")}

它返回列表:

[521934, 2342, FOXTROT]

但是书(Thomas Nield:Learning RxJava/2017/Page 114)说它必须返回分隔的字符串

521934
2342
FOXTROT   

书中的例子

http://reactivex.io/documentation/operators/flatmap.html 说它返回单个对象。就我而言,我得到了单个列表对象。所以,文档说的是真的。但我想得到书本示例中的结果!

如何拆分列表并获得单独的对象?

利用flatMapIterable,这样您就可以从列表中获取项目流:

Observable.just("521934/2342/FOXTROT")
.flatMap { input -> Observable.fromArray(input.split("/")) }
.flatMapIterable { items -> items }
.subscribe { item -> Log.d(TAG, item) }

只需使用fromIterable

Observable.just("521934/2342/FOXTROT")
.flatMap { Observable.fromIterable(it.split("/")) }
.subscribe{
Log.d(TAG, "$it")
}

在数组的情况下,您必须另外使用扩展运算符,因为fromArray采用 vararg 参数列表:

Observable.fromArray(*arrayOf("521934","2342","FOXTROT"))

最新更新