2016-12-29 3 views
0

Ich versuche, einen Typ für eine Matrix (zweidimensionales Array) zu definieren. Ich habe dies:Verwenden Typ zum Definieren eines mehrdimensionalen Arrays in Scala

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

und dann definiere ich de DMatrix:

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

So weit so gut. Das Problem ist jetzt, wie man mit der DMatrix arbeitet. Ich habe einige Beispiele ausprobiert, aber nichts passiert:

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) 

so, die Frage ist, wie diese DMatrix Art zu benutzen?

Dank im Voraus

+0

„nichts passiert“ - was passieren würde nicht erwarten? –

+0

Ich möchte die DMatrix mit Werten füllen, z. in Position (0) (0) = 2.3, in Position (1) (0) = 3.6 und danach möchte ich die Werte verwenden, die die DMatrix aufrufen – MLeiria

Antwort

2

Es gibt nur einen kleinen, aber entscheidenden Fehler hier - in:

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

Sie haben def statt val verwendet DMatrix zu erklären: das bedeutet, dass der Ausdruck neu jedes Mal ausgewertet wird Sie greifen darauf zu. Wenn Sie also die Werte in den Arrays ändern, wird das Ergebnis zugunsten einer neuen DMatrix-Instanz "weggeworfen".

Ändern es val würde das Problem beheben, und Sie werden alle Änderungen sehen:

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

Super! Vielen Dank. – MLeiria

Verwandte Themen