2014-01-29 9 views
1

Компилятор продолжает производить следующие ошибки:Нет ClassTag ошибка компиляции доступны

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] } 

} 

Любые идеи о том, как это исправить?

ответ

2

Я думаю, что добавление ClassTag бы это исправить, как это:

[a:ClassTag] 

редактировать основанному на ваш комментарий о конфликте с неявным Params и контекстными рамками: Изменить неявные параметры включают ClassTag слишком

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

Если я добавлю это в определение класса, компилятор не сможет сказать «Не может иметь как неявные параметры, так и границы контекста» – synapse

+0

Это правда, вы должны добавить его как неявный параметр, например неявный ev: Ordering [a], ct : ClassTag [a]. –

Смежные вопросы