Kotlin 1.3.31
RxJava2
i具有以下方法,该方法应通过使用地图操作员来获取用户和循环列表,然后将GPA提高到10。然后将结果打印在onNext
中。但是,我要打印的是:
kotlin.Unit
我认为,用户的list
应将流传递到subscribe
方法
onNext
private fun getUserListMapped() {
val disposable = getUserListFromCallable()
.map {
it.forEach { user ->
user.gpa *= 10
}
}
.subscribeOn(schedulerProvider.background())
.observeOn(schedulerProvider.ui())
.subscribe { println("users $it") }
}
这是我为吸引用户而做的:
private fun getUserListFromCallable(): Observable<List<User>> {
return Observable.fromCallable { createListOfUsers() }
}
private fun createListOfUsers(): List<User> {
Thread.sleep(500L) // simulate getting from the network or local
return listOf(
User("john", "paris town", 5.6F),
User("simon", "hollands place", 2.56F),
User("lisa", "london bridge", 3.89F),
User("peter", "tokyo hills", 4.3F))
}
非常感谢您的建议
在您的map
中,您必须返回值:
.map {
it.forEach { user ->
user.gpa *= 10
}
it
}
或者您可以这样使用doOnEach
:
.doOnEach {
it.forEach { user ->
user.gpa *= 10
}
}
forEach
方法返回Unit
,这就是为什么您会看到Unit
打印。您应该将map
操作员更改为这样的东西:
.map { it.map { user -> user.apply { gpa *= 10 } } }