Ich stecke fest versuchen, eine Seq[Seq[]]
mit dem Ergebnis flatten. Also, was ich hatte, war dies:Scala flachte einen Seq [Future [Seq []]]
def getListsByLC(lcId: Int): Action[AnyContent] = Action.async {
listRepo.getListsByLC(lcId).flatMap { lists =>
val items: Seq[Future[Seq[Item]]] = lists.map { list =>
itemRepo.getItemsByList(list.id)
}
Future.sequence(items).map { result =>
Ok(Json.obj("lists" -> lists, "items" -> result))
}
}
}
Das Ergebnis war offensichtlich ein array
von arrays
Nun, was ich tun wollte, ist flatten
diese Future.sequence
, um nur haben ein Array alle Elemente enthält. Dies, zusammen mit ähnlichen Versionen ich im Web gefunden surfen, ist das, was ich versuchte:
def getListsByLC(lcId: Int): Action[AnyContent] = Action.async {
listRepo.getListsByLC(lcId).flatMap { lists =>
val items: Seq[Future[Seq[Item]]] = lists.map { list =>
itemRepo.getItemsByList(list.id)
}
Future.sequence(items).map(._flatten) { result =>
Ok(Json.obj("lists" -> lists, "items" -> result))
}
}
}
Hier bekomme ich diese Compilieren Fehler: Sorry für die Qualität des Screenshots. Irgendwelche Ideen? Danke im Voraus!
Angesichts Ihrer Screenshot es sieht aus wie Ihr Beispiel nicht kompiliert. Was hat die von Ihnen gepostete Ausgabe generiert? – pedromss
Mein erstes Codebeispiel erzeugte die Ausgabe – Nocebo
Dann sollten Sie den Screenshot gepostet haben, der die Ausgabe generiert hat. Nicht etwas, das nicht kompiliert wird. – pedromss