Классы и массивы типов Scala [дубликаты]

Я часами гуглил о классах типа scala, но до сих пор не могу понять, как решить эту проблему:

 def mkArray[A:Ordering](size:Int):Array[A] = {
    Array.ofDim[A](size)
 }

В основном моя проблема заключалась в том, что я не мог создать массив типа A: Ordering, поэтому я перепробовал кучу вещей и в итоге использовал функцию выше. Но это говорит мне, что:

- not enough arguments for method ofDim: (implicit evidence$3: scala.reflect.ClassTag[A])Array[A]. Unspecified value parameter 
 evidence$3.
- No ClassTag available for A

Поэтому, если бы вы могли рассказать мне, как обойти эту проблему и, возможно, немного объяснить, что здесь происходит, я был бы очень признателен!


person Ou Tsei    schedule 14.10.2014    source источник


Ответы (1)


Array.ofDim требует неявного ClassTag для T в области видимости, поэтому вам нужно добавить его в свою функцию mkArray.

  def mkArray[A:Ordering:ClassTag](size:Int):Array[A] = {
    Array.ofDim[A](size)
  }

  mkArray[String](10)
person Eugene Zhulenev    schedule 14.10.2014