我对 Scala 很陌生。
我想实现一个通用矩阵类“class Matrix[T]”。对 T 的唯一约束应该是 T 应该实现一个“+”和一个“*”方法/函数。我该怎么做呢?
例如,我希望能够同时使用 Int、Double 和我自己定义的类型,例如 Complex
我在想一些事情:
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
}
一切类型检查,但我仍然无法实例化矩阵。我是否缺少隐式构造函数?我该怎么做呢?还是我对我的方法完全错误?
在此先感谢 Troels