Comment aplatir une Liste de Terme en Scala
Je veux profiter de cette val:
val f = List(Future(1), Future(2), Future(3))
D'effectuer une opération sur elle (je pensais aplatir)
f.flatten
Et d'obtenir ce résultat
scala> f.flatten = List(1,2,3)
Si l'aplatir méthode n'est pas appropriée ici, c'est bien. Tant que je suis au résultat.
Merci!
- Que voulez-vous arriver si l'un des
Future
s échoue? - Si l'un des avenirs de l'échec, alors je veux le tout pour échouer. Cela fait partie des devoirs à faire à la question, donc je n'étais pas à la recherche pour obtenir le tout résolu pour moi. Mais au fond, j'ai encore à comprendre comment déterminer si un terme a échoué et s'ils le faisaient, je viens de tuer l'ensemble de la chose.
InformationsquelleAutor mikejones1477 | 2014-11-03
Vous devez vous connecter pour publier un commentaire.
Future.sequence
prend unList[Future[T]]
et renvoie unFuture[List[T]]
.Vous pouvez faire
et ensuite utiliser
map
ouonComplete
pour accéder à la liste de valeurs.Future
. Maintenant, vous pouvez le manipuler (soit la carte, utilisez onComplete ou tout ce que vous voulez). Le résultat à l'intérieur de laFuture
aura votre liste en cas de succèsFuture
n'a pas l'habitude d'imprimer ce qu'il ya dedans (que signifie le blocage). Si vous neFuture(1)
, vous obtiendrez quelque chose qui ressemble àscala.concurrent.impl.Promise$DefaultPromise@78393fdb
. Pour les tests, vous pouvez utiliser quelque chose commeAwait.result(f, 2.seconds)
.