Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]8426[/thread]

OOP: Vererbung & caller()



<< >> 3 Einträge, 1 Seite
daywalka
 2006-10-18 00:13
#70878 #70878
User since
2004-02-03
15 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

bin momentan dabei mich etwas in Perls OOP einzuarbeiten, habe dabei allerdings ein Problem bei der Vererbung. Und zwar habe ich bspw. die zwei Klassen/Packages A und B. Das Package B erbt dabei die new() und _init() Methoden des ersten Packages A über @ISA. Ich wollte nun in der _init() Methode eine Fallunterscheidung machen anhand des Packagenamens, den mir caller() liefert. Allerdings kann ich tun was ich will, es wird mir immer Package A als caller zurückgegeben, wenn ich über ein Objekt des Packages B die _init() Methode aufrufe. Hab ich eventuell irgendwas nicht beachtet oder ist das working as intended?
esskar
 2006-10-18 00:26
#70879 #70879
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
das wäre sowieso schlechter stil
besser

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package A;

sub new {
# ..
}

sub _init {
...
}

1;

package B;
use base qw/A/;

use NEXT;


sub new {
# ..
}

sub _init {
my $self = shift;
$self->NEXT::_init( @_ );
# ...
}

1;


oder noch besser, gleich CPAN:Class::C3 verwenden
daywalka
 2006-10-18 02:46
#70880 #70880
User since
2004-02-03
15 Artikel
BenutzerIn
[default_avatar]
danke sehr, werd ich mir mal näher anschauen.

Das mit caller() war natürlich ein Fehler meinerseits, denn caller() gibt die Daten im Kontext und nicht abhängig von der Zugehörigkeit zurück.
<< >> 3 Einträge, 1 Seite



View all threads created 2006-10-18 00:13.