如何将平面地图和以前的单人地图结合起来
问题描述:
有下一个工作代码,结合了.connect()
和.auth()
的结果。如何将平面地图和以前的单人地图结合起来
auth()
取决于connect()
的结果。总而言之,必须将api和auth结果合并到Connection
对象中。
fun getConnection(token: String): Single<Connection> {
return connect()
.map { Api(it) }
.flatMap { api -> api.auth(token)
.map { Connection(api, it) }
}
}
恕我直言,这段代码很有味道。可能它有没有在rxjava2内部映射获得Connection
更优化的解决方案?
答
在你的情况下,你根本不需要使用map()
。只需在flatmap()
内创建您的Api
对象。
fun getConnection(token: String): Single<Connection> {
return connect().flatMap { conn ->
val api = Api(conn)
api.auth(token).map { Connection(api, it) }
}
}
我发现它返回单。所以我认为所有的方法都返回'Single'。该代码不难闻。 –
您可以通过明确命名lambda参数而不是“it”来改进。当lambda嵌套或类型不明显时,不推荐使用'it'。 – voddan