Thread Problem bei Objekten in Klassenvariablen
(13 answers)
Opened by Gast at 2005-01-05 23:36
[quote=m1chaeL-,05.01.2005, 23:31]Warum klappt es manchmal (bei einfachen Datentypen) auch mit dem return $class?[/quote]
solange du keine attribute hast, funktioniert return $class auch, nur rufst du die methode dann nicht als objektmethode (d.h. auf das Objekt $self), sondern als Klassenmethode (auf die Klasse $class) auf, was ein ziemlicher unterschied ist, weil du in $self zwar was speichern kannst, in $class aber nur der Klassenname als skalarer wert steht. $class->new() uebergibt den Namen der Klasse als ersten Parameter $object->new() uebergibt das Objekt als ersten parameter manchmal sieht man in einem konstruktor (z.B. ->new) folgende zeilen Code: (dl
)
1 sub new { die zeile: my $class = ref($proto) || $proto ist da interessant: wenn z.B. $object->new() dann liefert ref($proto) den Namen der Klasse des objektes; wenn $class->new() dann liefert ref($proto) eine leere zeichenkette, weil ja der Klassenname ein string ist und keine referenz, dadurch wird das || ausgewertet und $proto (d.h. der Klassenname) dann $class zugewiesen. aber so einen dualen konstruktor (als klassen- und objektmethode) finde ich nicht schoen; wenn man ein objekt klonen will, kommt meistens $object->clone() besser... perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/ |