Scala 如何将期货[Seq[a]]转换为包含Seq[a]的期货?

Scala 如何将期货[Seq[a]]转换为包含Seq[a]的期货?,scala,finagle,finatra,Scala,Finagle,Finatra,我正在开发一个Finatra应用程序,我有一个未来[Seq[a]](来自Finagle call)。但是,我需要将其转换为一个新对象,例如,该对象包含Seq[a] case class Container[A](s: Seq[A]) 这将导致未来的[Container] 虽然我可以在Future[Seq[A]]上执行映射,但不清楚如何使用容器到达Future[Container[Seq[A]].map在Future上映射。应用: scala> case class Container[A

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

case class Container[A](s: Seq[A])
这将导致
未来的[Container]


虽然我可以在
Future[Seq[A]]
上执行映射,但不清楚如何使用
容器到达
Future[Container[Seq[A]]
.map
Future
上映射。应用
:

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()))
,无论您喜欢哪个。

.map
覆盖
未来的
。应用

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()))
,任您选择。

我建议阅读。我建议阅读。很好的解释!我混淆了Seq和Future之间的映射函数。很好的解释!我混淆了Seq和Future之间的映射函数。