【发布时间】:2023-04-03 09:15:01
【问题描述】:
我想从一个方法返回一个Future[Seq[String]] 和那个Seq[String] 的长度。目前我正在使用来自另一个 Future[T] 的映射函数构建 Future[Seq[String]]。
有什么方法可以在不等待未来的情况下做到这一点?
【问题讨论】:
标签: scala
我想从一个方法返回一个Future[Seq[String]] 和那个Seq[String] 的长度。目前我正在使用来自另一个 Future[T] 的映射函数构建 Future[Seq[String]]。
有什么方法可以在不等待未来的情况下做到这一点?
【问题讨论】:
标签: scala
您可以 map 覆盖当前的 Future 来创建一个新的,并将新数据添加到类型中。
val fss: Future[Seq[String]] = Future(Seq("a","b","c"))
val x: Future[(Seq[String],Int)] = fss.map(ss => (ss, ss.length))
【讨论】:
如果你不等待就知道Seq 的长度是多少,那么类似这样;
val t: Future[T] = ???
def foo: (Int, Future[Seq[String]]) = {
val length = 42 // ???
val fut: Future[Seq[String]] = t map { v =>
genSeqOfLength42(v)
}
(length, fut)
}
如果你不这样做,那么你将不得不像 jwvh 所说的那样返回Future[(Int, Seq[String])],或者你可以在稍后的调用函数中轻松获取长度。
【讨论】: