为什么Rx会打印整个数组而不是每个项目

时间:2019-03-15 08:25:14

标签: kotlin rx-java

我有以下代码:

 val places: Array<String> = arrayOf("Singapore", "Japan", "Norway") // From an Array - Output will be elements of the array
        val observable = Observable.fromArray(places)


        var result = "Hello, "

        observable.subscribe(
            { item ->
                result += item
            },
            { error ->
                error.printStackTrace()
            },
            {
                println("Done")
            }
        )

        print(result)
    }

我希望它能打印您好,新加坡|您好,日本|你好,挪威

但是我得到了:

Hello, [[Ljava.lang.String;@3830f1c0]

要打印数组中的元素,我缺少什么

1 个答案:

答案 0 :(得分:3)

Observable.fromArraycsv有点不同。它不需要实际的数组,但是需要vararg参数。这是它的签名:

fromIterable

因此像这样调用它实际上将为您提供一个包含单个元素的public static <T> Observable<T> fromArray(T... items) ,并且其类型为Observable

Observable<Array<String>>

您要寻找的val places: Array<String> = arrayOf("Singapore", "Japan", "Norway") val observable: Observable<Array<String>> = Observable.fromArray(places) 可以这样创建:

Observable<String>

或者,如果您已有阵列,请使用spread operator

val observable: Observable<String> = Observable.fromArray("Singapore", "Japan", "Norway")