【发布时间】:2011-11-17 15:03:09
【问题描述】:
如何创建一个类来对 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 是Ordered[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]]
那么我怎样才能对一些既是有序又是数字的类型进行操作呢?
【问题讨论】: