Я создал класс, который может быть параметризован всем, что может быть преобразовано в Числовое
class Complex[T <% Numeric[T]] (val real : T, val imag : T) {
//... complex number methods ...
}
Затем в другом месте кода, который я пытаюсь:
var myComplex = new Complex(0, 1)
Это вызываетошибка компиляции, потому что (что удивительно) не существует неявного преобразования между Int и Numeric [Int] или даже между Int и Integral [Int].
Я что-то упустил?Есть ли неявное преобразование где-то, чего я не вижу?
Есть неявный объект с именем IntIsIntegral, определенный в Numeric.scala.Я попытался использовать это для создания собственного метода неявного преобразования:
def implicit intToNumericInt(val i : Int)(implicit n : IntIsIntegral) = n.fromInt(i)
Я удивлен, что это необходимо, и, в любом случае, это может привести к бесконечной рекурсии в метод .fromInt.
Я уверен, что мне не хватает чего-то простого (как вы можете сказать, я новичок в Scala), поэтому был бы признателен за точку в правильном направлении.
Как вы можете видеть изНапример, я пытаюсь заставить работать реализацию Complex number, которая может принимать и работать с любым типом Numeric.Я надеюсь внести свой вклад в проект скалала (линейная алгебра).После этого я хочу ввести черту, описывающую обязанности элементов в матрице (в основном только операторы + и *) и модифицировать поддержку комплексных чисел в библиотеке манипулирования матриц.