2016-12-29 31 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