Thread Referenzen von Variablen Funktionen übergeben die noch nicht da sind. (7 answers)
Opened by unwichtig at 2012-02-25 19:49

Linuxer
 2012-02-25 22:13
#156440 #156440
User since
2006-01-27
3869 Artikel
HausmeisterIn

user image
Das ist ein wenig Magie/Vodoo, was da gemacht wird.
Da spielen noch weitere Möglichkeiten mit rein, die durch die Objekt-Orientierung geboten werden.
Das hat nicht unbedingt mehr was mit den klassischen Datenstrukturen auf Referenz-Basis zu tun. Hier steckt mehr dahinter; aber ich muss gestehen, dass geht mir hier zu weit zu erläutern.

Das ist kein assoziatives Array, sondern ein Array (bzw. entsprechende Referenzen).
Ein assoziatives Array wäre in Perl der Hash; für den man wiederum eigene Klammern verwendet, um Referenzen auf anonyme Exemplare zu erzeugen.

Code (perl): (dl )
1
2
my $hash_ref  = { bla => 1 };
my $array_ref = [ 'bla', 1 ];


Etwas besonders ist hier der =>; dieser Operator wird auch "fettes Komma" genannt.
Der macht etwas mehr als das Komma, bleibt aber ein Komma.
Für Hashes ist der Operator sehr schön, weil die Zuordnung der Schlüssel=>Wert Paare sehr schön dargestellt werden kann; aber letzten Endes werden Hashes mit Listen (mit gerader Anzahl Elementen) gefüttert, bei der eben das erste Element mit dem zweiten "verbunden" steht, das dritte mit dem vierten, usw.

Code (perl): (dl )
-command => [$main => 'destroy']


Also ist das hier eine einfache Array-Referenz.
Es wird aber eine besondere Beziehung zwischen $main und 'destroy' hervorgehoben.
Die wird im Kontext der Tk-Module bedeutsam; daher mag ich das hier auch nicht näher versuchen zu beleuchten.
(Dazu müsste ich mich selber in die Quellen von Tk einlesen...)

Ein $main->destroy stellt so wieder einen direkten Aufruf der Methode 'destroy' des Objektes $main dar; das will man ja so auch nicht; es soll ja erst ausgeführt werden, wenn das entsprechende Ereignis ausgelöst wird (z.B. Button wird gedrückt).

Weitere interessante Links dürftest Du dort finden: http://perl-tutorial.org/
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Referenzen von Variablen Funktionen übergeben die noch nicht da sind.