0
私は入力パラメータのデータ型を明示的に定義するのではなく、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は=パラメータに のvar Cを取ることはありません。 Array.apply(A.map(_(COLS(0))})
コンソール:39:エラー:Tは、パラメータを取らない するvar C = Array.apply(A.map {(COLS(0。 ))}}、A.map {(COLS(1))})
あなたはその行で何をしようとしていますか? –
特定の列をArray [Array [Double]]から取得しようとしています.1つの列しか取得しなければならない場合は、この行A.map {_(cols(0))}を使用してdoubleその列に対応する。配列の配列として作るために、私はscalaでapply関数を使わなければなりません。取得する列が複数ある場合は、ループを使用する必要があります。 –
しかし、 'T'は必ずしも' Array'とは限りません。コンパイラが知っていることは、 'A.map(...) 'の中の' _'は何でもよいということです。 –