Ich versuche, das Verhalten dieser Code zu verstehen:Scala Hinzufügen Artikel zu seq Ergebnisse in Typ Equals
def getListsByLC(lcId: Int): Action[AnyContent] = Action.async {
listRepo.getListsByLC(lcId).flatMap { lists =>
val newLists: Seq[Future[Seq[List]]] = lists.map { list =>
itemRepo.getItemsByList(list.id).map { items =>
list.items.get :+ items
}
}
Future.sequence(newLists).map(_.flatten).map { lists =>
Ok(Json.obj("lists" -> lists))
}
}
}
I seq
von Listen haben und innerhalb List
gibt es einen anderen seq
von Item
. Ich möchte diese items
zu jedem entsprechenden list
hinzufügen. Mein Compiler sagt mir irgendwie, dass die Rückgabe von lists.map { ... }
ein Equals
ist. Ich kann keine Dokumentation zu diesem Verhalten finden. Was mache ich falsch? Fehle ich etwas? Danke im Voraus!
Bitte kopieren Sie den Code in die Frage einfügen. –
'Equals' ist das Merkmal, das' list.items.get' und 'items' gemeinsam haben und ist das einzige, was der Scala-Typ-Checker gemeinsam zwischen diesen beiden findet; Dies ist ein Hinweis darauf, dass die Arten dieser beiden Dinge nicht das sind, was Sie erwarten. Sie haben eine andere seltsame Sache; 'Seq [Future [Seq [List]]]' ist eine seltsame Typ-Signatur, es sei denn, Sie haben eine benutzerdefinierte Klasse namens 'List' definiert. A 'Seq [List]' ist immer wieder eine Sequenz des Companion-Objekts "List", kein "Seq" von Listen von etwas. Listen sind höherwertige Typen, d. H. Sie nehmen ein Typargument, um ein konkreter konkreter Typ zu werden (z. B. "List [Int]"). – badcook
@badcook 'Seq [Liste]' könnte verwirrend sein. Ja, ich habe eine benutzerdefinierte Klasse namens 'List' definiert. Danke für deinen Kommentar, ich werde versuchen, die 'Equals' Situation zu beheben :) – Nocebo