2016-12-29 33 views
0

我试图为一个矩阵(二维数组)定义一个类型。我有这样的:使用类型定义一个多维数组在scala中

scala> type DMatrix[T] = Array[Array[T]] 
defined type alias DMatrix 

,然后我定义去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

“什么也没发生” - 你是怎么想到会发生? –

+0

我想用数值填充DMatrix,例如在位置(0)(0)= 2.3,位置(1)(0)= 3.6之后,我想使用这些值调用DMatrix – MLeiria

回答

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)) 
+0

太棒了!谢谢。 – MLeiria