使用type在scala中定义多维数组

时间:2016-12-29 13:03:00

标签: arrays scala multidimensional-array

我试图为矩阵(二维数组)定义一个类型。我有这个:

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类型?

提前致谢

1 个答案:

答案 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))