两个对象 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
调用。
我有以下两个方法,如何将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
调用。