<< Referenzen | Inhalt | Sortieren >> |
Beschreibung am Beispiel | Umsetzung: So geht es nicht! | Array von Referenzen auf anonyme Arrays | Array von Referenzen auf Arrays |
Vorwiegend werden zweidimensionale Arrays verwendet. Daher bleiben auch wir hier in der zweiten Dimension ...
In der Mathematik gibt es den Begriff der Matrix. Eine Matrix ist ein zwei-dimensionales Array. Man betrachtet meherere Zeilen gleicher Länge, in der z. B. Zahlen stehen:
Das wäre jetzt ein Beispiel für eine Matrix mit 4 Zeilen und 3 Spalten - eine sog. (4x3)-Matrix. (Statt der vier senkrechten Striche und die Schrägstriche links und rechts schreibt man normalerweise jeweils eine große runde Klammer.) Will man den Eintrag in der i-ten Zeile und der j-ten Spalte ansprechen, so schreibt man Ai,j. A2,3 wäre dann der Wert 11.
Es geht nicht so:
Also die Sache mit dem Konstrukt Arrays von weiteren Arrays - wie es in vielen anderen Programmiersprachen gelöst ist - kann man nicht verwenden, um ein zweidimensionales Array zu bauen!
Stattdessen muss man hier einen "Umweg" gehen: Man arbeitet mit einem Array von Referenzen auf Arrays. Das funktioniert, da Referenzen skalare Daten sind:
Eigentlich ist das nichts neues. Auf den Seiten vorher haben wir bereits Referenzen und anonyme Arrays kennengelernt - interessant wird es nur, wie man auf ein zweidimensionales Array zugreift:
Und das fällt auf:
Das Array @A enthält Referenzen (Speicheradressen) auf Arrays! $A[0] ist also eine Referenz auf das anonyme Array [1, 2, 3, 4]. Um an den Inhalt des Arrays heranzukommen, ist es nötig zu dereferenzieren: @{$A[0]}. Perl würde ohne den Klammern versuchen $A zu derefernzieren. Durch die Klammerung bezieht sich Perl auf $A[0] - was wir ja wollen. Analog ist die Dereferenzierung, wenn man auf einzelne Elemente des zweidimensionalen Arrays zugreifen will: ${$A[1]}[2].
Mit der foreach-Schleife wird hier ganz normal das Array abgearbeitet - nur dass man eben mit Referenzen zurückbekommt: Als erstes die Referenz auf das anonyme Array [1, 2, 3, 4], als nächstes die Referenz auf [5, 6, 7, 8] und schließlich noch die Referenz auf [9, 0, 1, 2]. Und wie man mit einer Referenz auf ein Array verfährt, kennen wir ja schon von früher.
Eigentlich ist ein Array von Referenzen auf Arrays nichts anderes als oben. Der einzige Unterschied ist der, dass statt anonyme Arrays ganz normale Arrays verwendet werden. Das heißt ganz einfach, dass die Arrays, auf die die Referenzen zeigen mit Variable vorhanden - eben nicht anonym - sind.
Das fällt auf:
Beschreibung am Beispiel | Umsetzung: So geht es nicht! | Array von Referenzen auf anonyme Arrays | Array von Referenzen auf Arrays |
<< Referenzen | Inhalt | Sortieren >> |
© 2001-2003 Perl, Lehrstuhl Mathe II, Uni Bayreuth |