没有ClassTag可用的编译错误

时间:2014-01-29 14:13:46

标签: scala

编译器不断产生以下错误:

No ClassTag available for a
  val keys = Array.fill(maxSize+1){ default[a] }
                                  ^
not enough arguments for method fill: (implicit evidence$9: scala.reflect.ClassTag[a])Array[a].
Unspecified value parameter evidence$9.
  val keys = Array.fill(maxSize+1){ default[a] }
                                  ^

这段代码

object Utils {
  def default[a] = {
    class DefaultVal {
      var x: a = _
    }
    (new DefaultVal).x
  }
}

class IndexedHeap[a](maxSize: Int)(implicit ev: Ordering[a]) {
  import ev._
  import Utils._

  val keys = Array.fill(maxSize+1){ default[a] }

}

有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:2)

我认为添加ClassTag会修复它,如下所示:

[a:ClassTag]

根据您对隐式参数和上下文边界冲突的评论进行编辑: 更改隐式参数以包括ClassTag

implicit ev: Ordering[a], ct: ClassTag[a]