首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala隐式转换

Scala隐式转换
EN

Stack Overflow用户
提问于 2017-02-24 08:10:39
回答 1查看 85关注 0票数 0

我很难让这个隐式转换正常工作。我一直收到这些错误:

代码语言:javascript
复制
[error]  

found: (scala.collection.immutable.Map[O,scala.collection.immutable.Seq[D]], O) => scala.collection.immutable.Map[O,scala.collection.immutable.Seq[D]]
required: 
(Object, Object) => Object  
     at (operToDocsMap: Map[O, Seq[D]], operator: O) =>

[error] type mismatch;
found   : Object
required: scala.collection.immutable.Map[O,scala.collection.immutable.Seq[D]]
 at .fold(operatorToDocsMap){

我的代码:

代码语言:javascript
复制
object ModelTypes {
  trait Document

  trait DocumentOperator {
    def operatesOn[D <: Document](document: D): Boolean
  }

  class Documents[D <: Document](docs: Seq[D]) {
    def groupByOperator[O <: DocumentOperator](operators: Seq[O])
      : Map[O, Seq[D]] = {
      docs.foldLeft(Map[O, Seq[D]]()) {
        (operatorToDocsMap: Map[O, Seq[D]], document: D) =>
          operators
            .filter(_.operatesOn(document))
            .fold(operatorToDocsMap){
              (operToDocsMap: Map[O, Seq[D]], operator: O) => 
                {operToDocsMap + (operator -> (document +: operToDocsMap.getOrElse(operator, Seq())))}
            }
      }
    }
  }
  implicit def documentsConverter[D <: Document](docs: Seq[D]) =
    new Documents(docs)
}

是不是类型边界有问题?任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-24 10:04:47

下面是实现您的需求的更常用的方法。这个逻辑应该在不使用复杂的嵌套foldJoins的情况下给出操作符和文档之间的分组。

代码语言:javascript
复制
  class Documents[D <: Document](docs: Seq[D]) {
    def groupByOperator[O <: DocumentOperator](operators: Seq[O]): Map[O, Seq[D]] = {
      val operatorDoc =
        for {
          doc <- docs
          operator <- operators if operator.operatesOn(doc)
        } yield (operator -> doc)
      operatorDoc
          .groupBy({ case (x, _) => x })
          .mapValues(_.map({ case (_, x) => x }))
    }
  }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42428564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档