1
我試圖理解這段代碼的行爲:斯卡拉添加項式序列結果的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))
}
}
}
我名單seq
和內List
還有的Item
另一個seq
。我想將這些items
添加到相應的list
。我的編譯器不知何故告訴我,lists.map { ... }
的返回是Equals
。我找不到有關此行爲的任何文檔。我究竟做錯了什麼?我錯過了什麼嗎?提前致謝!
請複製的代碼粘貼到的問題。 –
'Equals'是'list.items.get'和'items'共享的特徵,也是Scala類型檢查器在這兩者之間共同發現的唯一東西;這表明這兩件事的類型不符合你的期望。 你有另一個奇怪的事情; 'Seq [Future [Seq [List]]]'是一個奇怪的類型簽名,除非你定義了一個名爲List的自定義類。一個'Seq [List]'是'List'伴隨對象的一個序列,而不是某個列表的Seq'。列表是更高級的類型,即它們將類型參數變成實際的具體類型(例如'List [Int]')。 – badcook
@badcook'Seq [List]'可能會令人困惑。是的,我定義了一個名爲'List'的自定義類。感謝您的評論,我將嘗試修復'Equals'情況:) – Nocebo