我试图为矩阵(二维数组)定义一个类型。我有这个:
scala> type DMatrix[T] = Array[Array[T]]
defined type alias DMatrix
然后我定义de DMatrix:
scala> def DMatrix = Array.ofDim[Double](2,2)
DMatrix: Array[Array[Double]]
到目前为止一切顺利。现在的问题是如何使用DMatrix。我尝试了一些例子但没有任何反应:
scala> DMatrix(0)(0) = 1.0
scala> DMatrix
res40: Array[Array[Double]] = Array(Array(0.0, 0.0), Array(0.0, 0.0))
scala> DMatrix(0)
res41: Array[Double] = Array(0.0, 0.0)
scala> DMatrix(0) = Array(1.0,2.1)
scala> DMatrix(0)
res43: Array[Double] = Array(0.0, 0.0)
所以,问题是如何使用这种DMatrix类型?
提前致谢
答案 0 :(得分:2)
这里只有一个微小而重要的错误 - 在:
scala> def DMatrix = Array.ofDim[Double](2,2)
您已使用def
代替val
来声明DMatrix
:这意味着每次访问时都会重新评估表达式,因此当您修改数组中的值时,结果被“抛弃”而支持新的DMatrix
实例。
将其更改为val
可解决问题,您将看到所有更改:
scala> val DMatrix = Array.ofDim[Double](2,2)
DMatrix: Array[Array[Double]] = Array(Array(0.0, 0.0), Array(0.0, 0.0))
scala> DMatrix(0)(0) = 1.0
scala> DMatrix
res1: Array[Array[Double]] = Array(Array(1.0, 0.0), Array(0.0, 0.0))