У меня есть Future[Future[(String,String)]]
, и я хочу преобразовать его в Future[(String,String)]
, используя для понимания.Преобразование будущего [Future [(String, String)]] в Future [(String, String)] в Scala для понимания
2
A
ответ
5
Не обязательно с пониманием, простой подход предполагает использование flatMap
по сравнению с identity
.
Рассмотрим, например
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def f: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
Тогда
f.flatMap(identity)
res: scala.concurrent.Future[(String, String)] = [email protected]
1
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
val futureOfFutures: Future[Future[(String,String)]] = Future { Future {("a","aa")} }
for(futureOfFuture <- futureOfFutures; futureResult <- futureOfFuture) yield futureResult
Только в случае, если вы хотели использовать для понимания. Так вы это делаете.
Возможный дубликат [Как я могу сгладить это будущее \ [T \] структура?] (Http://stackoverflow.com/questions/15835222/how-can-i-flatten-this-futuret-structure) –