2016-12-29 8 views
0

私は行列(2次元配列)の型を定義しようとしています。私はこれがあります。型を使用してスカラの多次元配列を定義する

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)= 2.3、位置(1)(0)= 3.6にしてから、DMatrixを呼び出す値を使用したい – MLeiria

答えて

2

ほんのが、決定的な間違いがここにあります - で:

scala> def DMatrix = Array.ofDim[Double](2,2) 

あなたはDMatrixを宣言する代わりにvaldefを使用しました:式が新たに毎回評価されることを意味していますその配列にアクセスすると、配列内の値を変更すると、その結果は新しい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