如何将 Future[Seq[A]] 转换为包含 Seq[A] 的 Future?
How to convert a Future[Seq[A]] to a Future that contains Seq[A]?
我正在开发一个 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(Container.apply(_))
又是 f.map(v => Container.apply(v))
.
的缩写
请注意,您也可以将其写成 f.map(Container(_))
,随您喜欢。
我正在开发一个 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(Container.apply(_))
又是 f.map(v => Container.apply(v))
.
请注意,您也可以将其写成 f.map(Container(_))
,随您喜欢。