Kotlin 1.3.31
RxJava2我有以下方法,可以通过使用映射操作符获得用户和循环的列表,并将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))
}非常感谢您的建议
发布于 2019-08-04 20:44:07
在你的map中,你必须返回值:
.map {
it.forEach { user ->
user.gpa *= 10
}
it
}或者您可以像这样使用doOnEach:
.doOnEach {
it.forEach { user ->
user.gpa *= 10
}
}发布于 2019-08-08 22:47:02
forEach方法返回一个Unit,这就是打印Unit的原因。您应该将map运算符更改为如下所示:
.map { it.map { user -> user.apply { gpa *= 10 } } }https://stackoverflow.com/questions/57346367
复制相似问题