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

时间:2016-12-31 14:26:42

标签: scala object apache-spark error-handling large-data

我有以下两种方法,如何将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

1 个答案:

答案 0 :(得分:0)

问题是,您尝试分配给list1的值为Set,但list1 var的类型为List

编译器错误尽可能地解释了这一点,但也许错误消息有点模糊,因为赋值的右侧可能有很多类型(&#34;多态表达式&#34;),所以&# 34;实测值&#34;错误消息中的行是一系列类型,而不是单个类型。

尝试将list1更改为Set[String]类型,或将toSet来电更改为toList来电。