Thread Methoden erweitern
(3 answers)
Opened by rosti at 2012-08-23 09:57
Sauber ist es zu Erben und die Methode in der Kindklasse zu überschreiben.
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package Class::myIrgendwas; use strict; use warnings; use parent 'Class::Irgendwas'; sub method { my $self=shift; return $self->Super::method(@_) if(@_==1); my $val1=shift; my $val2=shift; # ... return #... } Das hilft auch bei der Dokumentation der Veränderungen. Aber... Bei Perl sind die Namensräume kaum geschützt, weshalb man Funktionen und Methoden leicht überschreiben kann. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 use Class::Irgendwas; BEGIN { # alte Methode sichern my $ref=\&Class::Irgedndwas::method; # überschreiben mit neuer Methode *Class::Irgedndwas::method=sub { return $ref->(@_) if(@_==2); my $self=shift; my $val1=shift; my $val2=shift; # ... return #... } } Das kann auch zu Problemen führen, wenn andere Module das auch machen, oder sich darauf verlassen dass immer nur ein Wert verarbeitet wird $obj->method(@zeug). Die Gefahr das etwas schief läuft ist da. Ich benutze das nur um Fehler zu korrigieren, bis das Modul aktualisiert wird. |