两个对象 SCALA 之间的调用方法

call method between two objects SCALA

我有以下两个方法,如何将DocsObj中定义的方法调用到DistanceObj中?

第一个对象是:

object DocsObj{
     def Docs(s: List[String], b:Int): List[String] = { ... }
}

第二个是:

object Distance{
    def tanimoto(l1: List[String], l2: List[String]): Float={
        var list1= List[String]()
        list1=DocsObj.Docs(l1,6).asInstanceOf[List].toSet
    }
}

错误如下:

<console>:29: error: polymorphic expression cannot be instantiated to expected type;
found   : [B >: String]scala.collection.immutable.Set[B]
required: List[String]
   list1=DocsObj.Docs(list1,6).asInstanceOf[List[String]].toSet

问题是您试图分配给 list1 的值是 Set,但 list1 变量的类型是 List.

编译器错误尽可能地解释了这一点,但也许错误消息有点晦涩,因为赋值的右侧可能采用多种类型 ("polymorphic expression"),因此 "found" 错误消息中的行是一系列类型,而不是单一类型。

尝试将 list1 更改为 Set[String] 类型或将 toSet 调用更改为 toList 调用。