RxJava Kotlin 如何从单个可观察对象中获取分离的对象<String>
RxJava Kotlin how to get separated objects from single observable<String>
RxJava Kotlin 平面图不会 return 将对象与拆分字符串分开。取而代之的是 returns List
val source: Observable<String> = Observable.just("521934/2342/FOXTROT")
.flatMap{Observable.fromArray(it.split("/"))}
.subscribe{Log.d(TAG, "$it")}
它return的列表:
[521934, 2342, FOXTROT]
但是书(Thomas Nield:学习 RxJava/2017/第 114 页)说它必须 return 分隔字符串
521934
2342
FOXTROT
example from book
http://reactivex.io/documentation/operators/flatmap.html 表示它 return 是单个对象。在我的例子中,我得到了 Single List 对象。所以,文档说的是真的。但我想得到书本示例中的结果!
如何拆分列表并获得分离的对象?
利用 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
采用可变参数列表:
Observable.fromArray(*arrayOf("521934","2342","FOXTROT"))
RxJava Kotlin 平面图不会 return 将对象与拆分字符串分开。取而代之的是 returns List
val source: Observable<String> = Observable.just("521934/2342/FOXTROT")
.flatMap{Observable.fromArray(it.split("/"))}
.subscribe{Log.d(TAG, "$it")}
它return的列表:
[521934, 2342, FOXTROT]
但是书(Thomas Nield:学习 RxJava/2017/第 114 页)说它必须 return 分隔字符串
521934
2342
FOXTROT
example from book
http://reactivex.io/documentation/operators/flatmap.html 表示它 return 是单个对象。在我的例子中,我得到了 Single List 对象。所以,文档说的是真的。但我想得到书本示例中的结果!
如何拆分列表并获得分离的对象?
利用 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
采用可变参数列表:
Observable.fromArray(*arrayOf("521934","2342","FOXTROT"))