Как можно создать класс, который выполняет математические и сравнения любого числового типа в Scala?
Один очевидный подход:
import math.Numeric.Implicits._
class Ops[T : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
Зарабатывает мне это ...
Ops.scala:7: value > is not a member of type parameter T
Хммм ... мы можем делать математику с числовыми типами, но не можем сравнить их?
Так что давайте также скажем, что T
- это Упорядоченный [T]
...
class Ops[T <: Ordered[T] : Numeric] {
def add(a: T, b: T) = a + b
def gt(a: T, b: T) = a > b
}
Это компилируется. Но попытаться использовать его?
new Ops[Int].gt(1, 2)
И я получаю ...
Ops.scala:13: type arguments [Int] do not conform to class Ops's type parameter bounds [T <: Ordered[T]]
Так как я могу работать с некоторым типом, который является одновременно упорядоченным и числовым?