Я делаю проект в Scala, и я борюсь с определенной вещью. Я делаю матрицу DSL, поэтому я перегружаю некоторые операторы, такие как +, - или *, чтобы я мог сделать:
matrixMult = matrix1*matrix2
Дело в том, что я создал этот класс, где матрица была представлена как тип Array [Array [Double]], но я хотел бы сделать его универсальным: Array [Array [T]]
Дело в том, что я не знаю, как справиться с этим в методах класса, поскольку для таких операций, как +, - и *. Он должен работать для двойных или целых, но строки должны выдавать ошибку. Вот мой текущий код:
def +(other : Matrix[Double]): Matrix[Double] = {
var array = new Array[Array[Double]](rows)
for (i <- 0 to (rows - 1)) {
var arrayRow = new Array[Double](columns)
for (j <- 0 to (columns - 1)) {
arrayRow(j) = this.array(i)(j) + other.array(i)(j)
}
array(i) = arrayRow
}
return new Matrix(array)
}
Я получаю сообщение об ошибке в строке arrayRow (j) = ..., которая нормальна, потому что она не знает, к какому типу относится этот объект.
Что я должен сделать, чтобы сделать эту работу? Как я хотел бы, чтобы этот метод был доступен только для двойных (или целых) значений, а не для строк, если этот метод должен вызываться для объекта Matrix [String], он должен выдавать ошибку. Я попытался сопоставить шаблон с isInstanceOf (), но это не устраняет ошибку, и я не могу скомпилировать.
Если у меня есть такая же проблема со всеми моими методами в моем классе, поэтому я хотел бы получить общий ответ, если это возможно.
Любая помощь приветствуется,
Большое спасибо!