我正在使用Finatra应用程序,我有一个Future[Seq[A]]
(来自Finagle电话).不过,我需要将其转换成一个包含一个新的对象Seq[A]
,例如
case class Container[A](s: Seq[A])
那会导致Future[Container]
.
虽然我可以执行地图Future[Seq[A]]
,但目前还不清楚如何到达Future[Container[Seq[A]]
.
.map
在Future
与Container.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(_))
自己的喜好编写它.