【发布时间】:2013-12-20 01:51:29
【问题描述】:
我正在尝试解决以下问题:
我有一个 Future[Map[A, B]]。对于所有 B,我需要应用将 B 转换为 Future[C] 的方法,并且我想返回 Future[Map[A, C]]
这是我目前的代码:
def getClients(clientIds: Seq[Int]): Future[Map[Int, ClientData]] = {
def getClientData(clientInfo: ClientInfo): Future[ClientData] =
clientInfo match {
case ValidInfo(info) => getData(info)
case _ => throw new Exception
}
client.getClients(clientIds) map {
_.toMap map {
case (clientId: Int, clientInfo: ClientInfo) =>
getClientData(clientInfo) map {
clientData => (clientId, clientData)
}
}
}
}
此代码错误,因为它返回 Iterable[Future[(Int, ClientData)]]
信息 getClients 是一种节俭方法,它返回 Future[Map[A, B]] 其中 Map 是可变的,因此我需要将其转换为不可变先用 toMap 映射。
提前感谢您的帮助!
【问题讨论】:
标签: scala twitter map future finagle