0

我正在开发一个 Finatra 应用程序,我有一个Future[Seq[A]](来自 Finagle 电话)。但是,我需要将其转换为包含的新对象,Seq[A]例如

case class Container[A](s: Seq[A])

这将导致Future[Container].

虽然我可以在 上执行地图Future[Seq[A]],但尚不清楚如何到达Future[Container[Seq[A]]

4

1 回答 1

5

.mapFutureContainer.apply

scala> case class Container[A](s: Seq[A])
defined class Container

scala> val f = Future.successful(List(1, 2, 3))
f: scala.concurrent.Future[List[Int]] = scala.concurrent.impl.Promise$KeptPromise@3f363cf5

scala> f.map(Container.apply)
res2: scala.concurrent.Future[Container[Int]] = scala.concurrent.impl.Promise$DefaultPromise@3d829787

scala> res2.value
res3: Option[scala.util.Try[Container[Int]]] = Some(Success(Container(List(1, 2, 3))))

f.map(Container.apply)是 的缩写f.map(Container.apply(_)),而后者又是 的缩写f.map(v => Container.apply(v))

请注意,您也可以根据f.map(Container(_))自己的喜好编写它。

于 2015-12-29T18:58:07.047 回答