У меня есть функция, которая использует classTag вместо явного определения типа данных входного параметра.classTag scala using map
Например,
def getColMult[T: ClassTag](A: Array[T], cols: Array[Int]): Array[Array[Double]] = {
if (cols.size == 1) {
var C = Array.apply(A.map{_(cols(0))})
C.transpose
}
else {
var C = Array.apply(A.map{_(cols(0))},A.map{_(cols(1))})
for (i <- (2 to cols.size - 1)) {
C = C++ Array(A.map{_(cols(i))})
}
C.transpose
}
}
После запуска функции, это было бы получить эту ошибку:
Имя: Ошибка компиляции Сообщения:: 35: ошибка: T не принимает параметры уага C = Array.apply (A.map (_ (COLS (0))})
консоли: 39: ошибка:. Т не принимают параметры вар C = Array.apply (A.map {(смещ_по_столбцам (0))}, A.map { (перевалы (1))})
Что вы пытаетесь сделать с этой линией? –
Я пытаюсь получить конкретный столбец из массива [Array [Double]] A. Если мне нужно получить только один столбец, я использую эту строку A.map {_ (cols (0))}, выводящий массив из двух соответствующий этой колонке. Чтобы сделать его массивом массива, я должен использовать функцию apply в scala. Если у меня есть несколько столбцов для получения, я должен использовать циклы. –
Но 'T' не обязательно является' Array'. Таким образом, все компиляторы знают, что '_' внутри' A.map (...) 'может быть любым. –