data
- список списков типа T
.Для конструктора NDArray
требуется объект типа Numeric[T]
.Поскольку этот параметр объявлен implicit
, это означает, что вам не нужно указывать его явно, когда компилятор может найти его в видимой области, которая также была определена как implicit
.
Теперь,поскольку вы создаете экземпляр NDArray
без указания T
, компилятор выводит T
.Он находит список списков и использует тип элемента внутреннего списка как T
.Но так как вы не указали его, а список пуст, по умолчанию это List[Nothing]
, поэтому компилятор приходит к выводу, что T
имеет тип Nothing
.
Затем он ищетimplicit
экземпляр Numeric[Nothing]
, но его не существует.
Есть несколько вещей, которые вы можете сделать.Либо:
new NDArray(List(List[Int]()))
Или:
new NDArray[Int](List(List()))
(Хотя я не уверен, что этот последний будет работать. Я не знаю, выведет ли компилятор параметр типавнутреннего списка правильно, вам просто нужно попробовать.)
Экземпляр implicit
из Numeric[Int]
уже импортирован по умолчанию, так как он является частью Predef
.Вам не нужно импортировать это явно.То же самое относится ко всем примитивным числовым типам.
Я не знаю, хотите ли вы использовать список списков целых чисел, или чисел с плавающей точкой, или что-то еще.Компилятор также не знает, и не может вывести, потому что список, который вы дали, пуст.