Sto provando a creare una classe generica con tipo generico che è sottoclasse di Numeric (per garantire che io stia trattando con i numeri.) e ho provato "class NuVector[T<:Numeric[T])
" come class def e compila bene.scala: come creare un tipo generico che è sottotipo di tutte le classi numeriche in scala in modo che possa includere il metodo di confronto
Ora voglio aggiungere PartiallyOrdered[T]
ad esso. così ho fatto quanto segue:
class NuVector[T<:Numeric[T]) extends PartiallyOrdered[T]
{
/** Array that stores the vector values.
*/
val v = new Array [T] (_length)
/** Range for the storage array.
*/
private val range = 0 to _length - 1
def compare(x:T,y:T)(implicit res:Numeric[T]) :Int=
{
res.compare(x,y)
}
def tryCompareTo [B >: NuVector [T]] (b: B)
(implicit view$1: (B) => PartiallyOrdered [B]): Option [Int] =
{
compare(x,y)
}
implicit def castT2Ordering(x:T):Numeric[T]=x.asInstanceOf[Numeric[T]]
implicit def castB2NuVector [B>:NuVector[T]] (b:B): NuVector[T]=
{
b.asInstanceOf[NuVector[T]]
}
}
non si sta compilando. L'errore che sto ottenendo durante la compilazione è:
could not find implicit value for parameter res:Numeric[T]
versione Scala che sto usando è 2,8
Qualsiasi aiuto è molto apprezzato.
Grazie,
~ Tigre.
Non so se si tratta di un bug o è un problema con la mia definizione.
Quale versione esatta di Scala2.8 stai usando? E questo è legato al biglietto 2274? (http://lampsvn.epfl.ch/trac/scala/ticket/2274) – VonC