Сравнения с числовыми типами Scala?

Как можно создать класс, который выполняет математические и сравнения любого числового типа в 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]]

Так как я могу работать с некоторым типом, который является одновременно упорядоченным и числовым?

7
задан Tim 17 November 2011 в 15:03
поделиться