2017-09-03 48 views
1

我試圖理解這段代碼的行爲:斯卡拉添加項式序列結果的Equals

enter image description here

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。我找不到有關此行爲的任何文檔。我究竟做錯了什麼?我錯過了什麼嗎?提前致謝!

+0

請複製的代碼粘貼到的問題。 –

+0

'Equals'是'list.items.get'和'items'共享的特徵,也是Scala類型檢查器在這兩者之間共同發現的唯一東西;這表明這兩件事的類型不符合你的期望。 你有另一個奇怪的事情; 'Seq [Future [Seq [List]]]'是一個奇怪的類型簽名,除非你定義了一個名爲List的自定義類。一個'Seq [List]'是'List'伴隨對象的一個​​序列,而不是某個列表的Seq'。列表是更高級的類型,即它們將類型參數變成實際的具體類型(例如'List [Int]')。 – badcook

+0

@badcook'Seq [List]'可能會令人困惑。是的,我定義了一個名爲'List'的自定義類。感謝您的評論,我將嘗試修復'Equals'情況:) – Nocebo

回答