我有一个val假设
val a: Future[List[(List[Case_Class], List[Case_Class])]] = //some method call
在我的元组中,有两个列表,比如说
listA = List[Case_Class] and listB = List[Case_Class].
两个列表一次都有两个元素。我需要的是将一些逻辑(例如:fold)应用到我的val'a'以实现
Future[(List(Case_Class), List(Case_Class))]
我必须应用的逻辑是什么?
答案 0 :(得分:1)
像
这样的东西a.map(_.unzip match { case (x, y) => (x.flatten, y.flatten) })
答案 1 :(得分:1)
请原谅下面示例中的不合理数量的括号,但这似乎有效:
case class Thing()
val a: Future[List[(List[Thing], List[Thing])]] = {
Future.successful(List((List(Thing()), List(Thing()))))
}
val b: Future[(List[Thing], List[Thing])] = {
a.map(x => (x.unzip._1.flatten, x.unzip._2.flatten))
}
Await.ready(b, Duration.Inf)
// scala.concurrent.Future[(List[Thing], List[Thing])] =
// Future(Success((List(Thing()),List(Thing()))))
有关unzip
here的更多信息。