为什么 Rx 打印整个数组而不是每个项目
Why does Rx print whole array and not each item
我有以下代码:
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]
为了打印数组中的元素我错过了什么
Observable.fromArray
与 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>
可以这样创建:
val observable: Observable<String> = Observable.fromArray("Singapore", "Japan", "Norway")
或者,如果您有一个现有数组,使用 spread operator:
val places: Array<String> = arrayOf("Singapore", "Japan", "Norway")
val observable: Observable<String> = Observable.fromArray(*places)
我有以下代码:
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]
为了打印数组中的元素我错过了什么
Observable.fromArray
与 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>
可以这样创建:
val observable: Observable<String> = Observable.fromArray("Singapore", "Japan", "Norway")
或者,如果您有一个现有数组,使用 spread operator:
val places: Array<String> = arrayOf("Singapore", "Japan", "Norway")
val observable: Observable<String> = Observable.fromArray(*places)