【发布时间】:2011-01-17 10:04:01
【问题描述】:
我对 Scala 很陌生。
我想实现一个通用矩阵类“class Matrix[T]”。对 T 的唯一约束应该是 T 应该实现一个“+”和一个“*”方法/函数。我该怎么做?
例如,我希望能够同时使用 Int、Double 和我自己定义的类型,例如复杂
我在想一些事情:
class Matrix[T <: MatrixElement[T]](data: Array[Array[T]]) {
def *(that: Matrix) = ..// code that uses "+" and "*" on the elements
}
abstract class MatrixElement[T] {
def +(that: T): T
def *(that: T): T
}
implicit object DoubleMatrixElement extends MatrixElement[Double]{
def +(that: Double): Double = this + that
def *(that: Double): Double = this * that
}
implicit object ComplexMatrixElement extends MatrixElement[Complex]{
def +(that: Complex): Complex = this + that
def *(that: Complex): Complex = this * that
}
所有类型都会检查,但我仍然无法实例化矩阵。我是否缺少隐式构造函数?我该怎么做呢?还是我的方法完全错了?
提前致谢 巨魔
【问题讨论】: