[英]RxJava Kotlin how to get separated objects from single observable<String>
RxJava Kotlin flatmap don't return separated objects from splitted string. RxJava Kotlin平面图不会从分割的字符串中返回分离的对象。 instead it returns List
而是返回列表
val source: Observable<String> = Observable.just("521934/2342/FOXTROT")
.flatMap{Observable.fromArray(it.split("/"))}
.subscribe{Log.d(TAG, "$it")}
It returns list: 返回列表:
[521934, 2342, FOXTROT]
But book ( Thomas Nield : Learning RxJava / 2017 / Page 114 ) says it has to return separated strings 但是本书( Thomas Nield:Learning RxJava / 2017 /第114页 )说它必须返回分离的字符串
521934
2342
FOXTROT
http://reactivex.io/documentation/operators/flatmap.html says that it returns Single object. http://reactivex.io/documentation/operators/flatmap.html表示它返回单个对象。 In my case I got Single List object.
就我而言,我得到了“单一列表”对象。 So, documentation says true.
所以,文档说的是真的。 But I want to get result as in book example!
但是我想得到像书中的例子那样的结果!
How I can split the list and get separated objects? 如何拆分列表并获取分离的对象?
Make use of flatMapIterable
, so you can get a stream of the items from the list: 利用
flatMapIterable
,因此您可以从列表中获得一系列的项目:
Observable.just("521934/2342/FOXTROT")
.flatMap { input -> Observable.fromArray(input.split("/")) }
.flatMapIterable { items -> items }
.subscribe { item -> Log.d(TAG, item) }
Just use fromIterable
: 只需使用
fromIterable
:
Observable.just("521934/2342/FOXTROT")
.flatMap { Observable.fromIterable(it.split("/")) }
.subscribe{
Log.d(TAG, "$it")
}
In case of array you would have to use a spread operator additionaly since fromArray
takes a vararg argument list: 在数组的情况下,由于
fromArray
需要一个vararg参数列表,因此您将不得不使用扩展运算符:
Observable.fromArray(*arrayOf("521934","2342","FOXTROT"))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.