Array
EinstiegArrays erzeugen
Zugriff auf die Elemente
Mehrdimensionale Array
Einstieg
Ein Scala-Array ist eine sequenzielle Abfolge von Objekten gleichen
Typs. So ist zum Beispiel ein Array[Int] eine Folge
von Objekten des Typs Int. Die Länge eines Scala-Arrays
wird bei dessen Initialisierung festgelegt und kann nachträglich nicht
verändert werden.
Die einzelnen Elemente eines Arrays können jedoch ausgetauscht werden, was dazu führt,
dass ein Scala-Array ein veränderlicher Datentyp ist.
Arrays erzeugen
Das nachfolgende Beispiel zeigt die Initialisierung eines Array
für Elemente des Typs Int, mit Platz für drei Elemente.
Nach der Initialisierung des Array werden Int Elemente
dem Array zugeordnet. Das Beispiel zeigt auch, dass der Zugriff
auf Array - Elemente 0 basierend ist (das erste Element eines Arrays
hat den Index 0).
var myInts = new Array[Int](3)
myInts(0) = 3
myInts(1) = 1
myInts(2) = 2
Dieses Array lässt sich auch in kürzerer Weise erzeugen, was nachfolgendes Beispiel zeigt. Beide Quelltextvarianten erzeugen identische Arrays.
var myInts = Array[Int](3,2,1)
Scala ist in der Lage den Parametertyp aus den initialisierenden
Werten abzuleiten. Daher kann die Angabe des Typs [Int]
auch weggelassen werden:
var myInts = Array(3,2,1)
Zugriff auf die Elemente
Die allgemeine Form des Zugriffs auf die Elemente eines Arrays hat folgende Form:
myInts.apply(1)
Dieser Zugriff kann auch in der Kurzschreibweise erfolgen:
myInts(1)
Auffällig ist, dass in Scala runde statt die aus Java gewöhnten
eckigen Klammern verwendet werden. Dies liegt einfach darin, dass auch
wenn man myInts(1) verwendet, der Compiler dies in
myInts.apply(1) übersetzt. Der Zugriff auf ein
Element eines Arrays ist somit ein gewöhnlicher Methodenaufruf.
Mehrdimensionale Arrays
Die Möglichkeiten direkt über den Konstruktor mehrdimensionale Arrays in Scala zu erzeugen sind als
deprecated gekennzeichnet, d.h, wir sollten diese Form nicht mehr benutzen.
Der aktuelle Quelltextstand zu Scala 2.10 (4.11.2011) zeigt zudem, dass Arrays von Arrays
val myMulArray = new Array[Array[Double]](2,3) in Scala 2.10
nicht mehr kompilieren wird.
Auf multidimensionale Arrays brauchen wir dennoch nicht zu verzichten.
Das Companion Objekt von Array bietet uns mehrere Factory-Methoden Array.ofDim[T](...)
zur Erzeugung von ehrdimensionalen Arrays mit bis zu 5 Dimensionen an.
Das nachfolgende Beispiel zeigt die Erzeugung und Verwendung eines 2-dimensionalen Arrays.
object MultiArray {
def main(args: Array[String]) {
val myMulArray = Array.ofDim[Double](2,3)
myMulArray(0)(0) = 1.0
myMulArray(0)(1) = 2.0
myMulArray(0)(2) = 3.0
myMulArray(1)(0) = 4.0
myMulArray(1)(1) = 5.0
myMulArray(1)(2) = 6.0
println(myMulArray(1)(2))
myMulArray.foreach(_.foreach(println(_)))
}
}
timpt.de - X2H V 0.11
Die Ausführung des Programms führt zu folgender Ausgabe auf der Systemausgabe:
6.0
1.0
2.0
3.0
4.0
5.0
6.0