gpt4 book ai didi

generics - Scala:对泛型类类型的约束

转载 作者:行者123 更新时间:2023-12-04 11:17:17 25 4
gpt4 key购买 nike

我对 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
}

一切类型检查,但我仍然无法实例化矩阵。我是否缺少隐式构造函数?我该怎么做呢?还是我的方法完全错误?

提前致谢
特洛尔斯

最佳答案

您可以使用 Numeric对于 Scala 2.8。这是描述here .它将取代 MatrixElement 及其实现:

class Matrix[T : Numeric](data: Array[Array[T]]) {
def *(that: Matrix[T]) = //
}

关于generics - Scala:对泛型类类型的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2273379/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com