¿Cómo se puede crear una clase que haga comparaciones matemáticas y en cualquier tipo numérico en Scala?Comparaciones con los tipos numéricos de Scala?
Un enfoque obvio:
import math.Numeric.Implicits._
class Ops[T : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
me gana esta ...
Ops.scala:7: value > is not a member of type parameter T
Hmmm ... podemos hacer matemáticas con tipos numéricos, pero no podemos compararlos?
Así que vamos a decir que también es T
Ordered[T]
...
class Ops[T <: Ordered[T] : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
que compila. Pero intenta usarlo?
new Ops[Int].gt(1, 2)
Y consigo ...
Ops.scala:13: type arguments [Int] do not conform to class Ops's type parameter bounds [T <: Ordered[T]]
Entonces, ¿cómo puedo operar en algún tipo que se ha dado la orden y numérica?
Niza, no era consciente de ese tipo de importación global en contraste con la importación local de 'numeric.mkXXXOps'. Lo usaré –
'' Numeric' extiende Ordering', por lo que pide un contexto 'Ordering' límites está redundante! 'T: Numérico' es suficiente. –
@Sciss: Tienes razón. Editado, gracias. – missingfaktor