【发布时间】:2016-06-18 09:55:42
【问题描述】:
由于 foo 方法的奇怪行为,我无法编写 bar 之类的方法, 我需要的:
import breeze.linalg.DenseMatrix
import breeze.linalg.DenseVector
class Test {
val dim = 3
val X:DenseMatrix[Double] = DenseMatrix.rand(dim,dim)
val u:DenseVector[Double] = DenseVector.fill(dim){1.0}
def foo:Unit = {
val i=0;
val row_i:DenseVector[Double] = X(i,::).t // OK
val s = u(i)+u(i) // OK
val j:Integer = 0
val row_j:DenseVector[Double] = X(j,::).t // does not compile (A)
val a = u(j)+u(j) // does not compile (B)
}
def bar(i:Integer):Double = u(i)+u(i) // does not compile (C)
}
有解决方法吗? 提前感谢所有回复。
编译错误:
(A) 找不到参数 canSlice 的隐式值: 微风.linalg.support.CanSlice2[breeze.linalg.DenseMatrix[Double],Integer,collection.immutable.::.type,Result] 方法 apply 的参数不足:(隐式 canSlice: 微风.linalg.support.CanSlice2[breeze.linalg.DenseMatrix[Double],Integer,collection.immutable.::.type,Result])
导致特征 TensorLike。未指定值参数 canSlice。
(B), (C)
找不到参数 canSlice 的隐含值: 微风.linalg.support.CanSlice[breeze.linalg.DenseVector[双],整数,结果] 方法应用的参数不足:(隐式 canSlice:breeze.linalg.support.CanSlice[breeze.linalg.DenseVector[Double],Integer,Result])结果 在特征 TensorLike 中。未指定值参数 canSlice。
【问题讨论】:
-
请给出编译错误而不是让我们猜测
-
@The Archetypal Paul,对不起,我依靠 IntelliJ 来预览问题,但实际编译显示不同的错误。因此我相应地编辑了帖子。
标签: scala matrix vector breeze