Thread Übergabe einer sort-Funktion an eine Methode: Problem beim Zugriff auf $a und $b
(23 answers)
Opened by docsnyder at 2006-01-19 11:16
Hallo!
Ich habe folgendes Problem mit dem Aufruf einer eigenen Sort-Funktion an eine Methode einer Klasse. Um zu verdeutlichen, worum es genau geht, hier zunächst ein Beispiel zur Vorgehensweise "ohne" daß eine Klasse im Spiel ist: Code: (dl
)
1 sub myCmp { Wenn ich nun myFunc() zu einer Methode einer Klasse mache (sagen wir myMethod()), und wenn die zu vergleichenden Werte $a und $b jetzt Objekte (mit einer Methode name()) sind (übergeben wird an sort() ein Array mit Objekten), scheint das nicht mehr zu funktionieren: Code: (dl
)
1 sub myCmp { Wird jetzt in myMethod() die Sort-Funktion myCmp() aufgerufen und das Array übergeben, kann die Methode name() nicht mehr für $a bzw. $b aufgerufen werden. Ich bekomme den Fehler Code: (dl
)
Can't call method "name" on an undefined value at ./usTree.pl line ... Und in der Tat, wenn ich myCmp() wie folgt definiere: sub myCmp { print("comparing '$a' and '$b' ...\n"); $a cmp $b; } bekomme ich die folgende Ausgabe: Code: (dl
)
comparing '' and '' ... In myMethod() kann ich für jedes Array-Element, das an sort() übergeben wird, die Methode name() aufrufen und bekomme ein sinnvolles Ergebnis, das Array ist also nicht leer, wie es die Fehlermeldung vermuten läßt. Was läuft hier falsch? Gruß, Doc |