gpt4 book ai didi

Scala 错误 : type arguments do not conform to class type parameter bounds

转载 作者:行者123 更新时间:2023-12-04 15:09:46 25 4
gpt4 key购买 nike

请参阅以下函数定义:

class Entity[T](
val pi : T => String,
val si : T => Map[Symbol,String],
val tag : ClassTag[T],
val address: T=>AnyRef
) {
// some other definitions here ...
def filterEntity(attribute: DiscreteAttribute[T], value: String ):Unit={
// nothing
}

}

编译器给了我以下错误:
/Users/i-danielk/ideaProjects/saul/src/main/scala/edu/illinois/cs/cogcomp/lfs/data_model/entity/Entity.scala:67: type arguments [T] do not conform to class DiscreteAttribute's type parameter bounds [T <: AnyRef]
[error] def filterEntity(attribute: DiscreteAttribute[T], value: String ):Entity[T]={

这是 DiscreteAttribute的定义:
case class DiscreteAttribute[T <: AnyRef](
val name : String,
val mapping: T => String,
val range : Option[List[String]]
)(implicit val tag : ClassTag[T]) extends TypedAttribute[T,String]{
....
}

知道我哪里出错了吗?

更新:以下也不起作用:
def filterEntity(attribute: DiscreteAttribute[T <: AnyRef], value: String ):Entity[T]={ 

这是错误:
 /Users/i-danielk/ideaProjects/saul/src/main/scala/edu/illinois/cs/cogcomp/lfs/data_model/entity/Entity.scala:67: ']' expected but '<:' found.
[error] def filterEntity(attribute: DiscreteAttribute[T <: AnyRef], value: String ):Entity[T]={

Update2:这是它的使用方式:
   val filteredConstituent= EdisonDataModel.constituents.filterEntity(EdisonDataModel.Eview,"Token")

在哪里
object EdisonDataModel extends DataModel {
val Eview = discreteAttributeOf[Constituent]('CviewName){
x=>x.getViewName
}


  def discreteAttributeOf[T <: AnyRef](name : Symbol)(f : T => String)(implicit tag : ClassTag[T]) : DiscreteAttribute[T] = {
new DiscreteAttribute[T](name.toString,f,None)
}

更新 3:
以下函数定义也存在同样的错误:
  def filterEntity(attribute: DiscreteAttribute[T], value: String ):Unit={
// empty
}

最佳答案

您需要为影响 filterEntity 方法的 T 类型定义限制。

例如class Something[T <: AnyRef]以便它匹配 DiscreteAttribute 上的限制

在您的情况下,您想要声明 Entity如:class Entity[T <: AnyRef] .

关于Scala 错误 : type arguments do not conform to class type parameter bounds,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32636339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com