【发布时间】:2016-05-12 18:34:32
【问题描述】:
我有一个函数使用 classTag 而不是显式定义输入参数的数据类型。
例如,
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))})
console:39: 错误:T 不带参数。 var C = Array.apply(A.map{(cols(0))}, A.map{(cols(1))})
【问题讨论】:
-
你想用那条线做什么?
-
我正在尝试从 Array[Array[Double]] A 中获取特定列。如果我只需要获取一列,我使用这一行 A.map{_(cols(0) )} 输出对应于该列的双精度数组。为了使它成为数组的数组,我必须在 scala 中使用 apply 函数。如果我有多个列要获取,我必须使用循环。
-
但
T不一定是Array。所以编译器只知道A.map(...)中的_可以是任何东西。 -
你能把图片换成文字吗?这使得索引更容易。
标签: scala functional-programming