我想同时返回方法中的Future[Seq[String]]
和Seq[String]
的长度。目前我正在使用另一个Future[Seq[String]]
的映射函数构建Future[T]
。
有没有办法在没有等待未来的情况下做到这一点?
答案 0 :(得分:2)
您可以map
覆盖当前Future
以创建新的数据,并将新数据添加到该类型中。
val fss: Future[Seq[String]] = Future(Seq("a","b","c"))
val x: Future[(Seq[String],Int)] = fss.map(ss => (ss, ss.length))
答案 1 :(得分:1)
如果你以某种方式知道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])]
,否则你可以在调用函数中轻松获得长度。