Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android RxJava Kotlin如何从单个可观察对象中获取分离对象<;字符串>;_Android_Kotlin_Observable_Flatmap - Fatal编程技术网

Android RxJava Kotlin如何从单个可观察对象中获取分离对象<;字符串>;

Android RxJava Kotlin如何从单个可观察对象中获取分离对象<;字符串>;,android,kotlin,observable,flatmap,Android,Kotlin,Observable,Flatmap,RxJava Kotlin flatmap不会从拆分的字符串返回分离的对象。相反,它返回列表 val source: Observable<String> = Observable.just("521934/2342/FOXTROT") .flatMap{Observable.fromArray(it.split("/"))} .subscribe{Log.d(TAG, "$it")} 但这本书(Thomas Nield:Learning RxJava/2017/Page 114)

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

val source: Observable<String> = Observable.just("521934/2342/FOXTROT")
.flatMap{Observable.fromArray(it.split("/"))}
.subscribe{Log.d(TAG, "$it")}
但这本书(Thomas Nield:Learning RxJava/2017/Page 114)说它必须返回分隔的字符串

521934
2342
FOXTROT   

表示它返回单个对象。在我的例子中,我得到了一个列表对象。所以,文件上说是真的。但我想得到书中例子中的结果


如何拆分列表并获取分离的对象?

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

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

只需使用Iterable中的

Observable.just("521934/2342/FOXTROT")
                .flatMap { Observable.fromIterable(it.split("/")) }
                .subscribe{
                    Log.d(TAG, "$it")
                }
对于数组,您必须额外使用扩展运算符,因为
fromArray
采用vararg参数列表:

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