2017-09-03 21 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

回答