nidhoegg
03-03-2008, 15:10
Hallo!
Ich arbeite mich gerade in Objekte in Perl ein und habe (nach einiger Zeit des Suchens und Wunderns) folgenden Unterschied beim Konstruktor* eines Objektes entdeckt (was nach meinem Lehrbuch eigentlich das selbe sein sollte):
Konstruiere ich ein Objekt mit $obj = new Klasse (param2, param2), dann läuft alles wie "gewohnt" (Parameter werden dem self->hash zugeordnet).
Rufe ich hingegen $obj = Klasse->new(param1, param2); auf, so wird der Variable $class der erste Parameter zugeordnet, was natürlich zu Fehlern führt.
*) Hier der Konstruktor:
sub new {
my $class = shift;
my $self = {};
$self->{'param_1'} = @_ ;
[...]
bless $self, $class;
return $self;
}
Kann mir jemand den Grund/Sinn dieses Verhaltens erklären?
Viele Grüße,
nidhoegg
Ich arbeite mich gerade in Objekte in Perl ein und habe (nach einiger Zeit des Suchens und Wunderns) folgenden Unterschied beim Konstruktor* eines Objektes entdeckt (was nach meinem Lehrbuch eigentlich das selbe sein sollte):
Konstruiere ich ein Objekt mit $obj = new Klasse (param2, param2), dann läuft alles wie "gewohnt" (Parameter werden dem self->hash zugeordnet).
Rufe ich hingegen $obj = Klasse->new(param1, param2); auf, so wird der Variable $class der erste Parameter zugeordnet, was natürlich zu Fehlern führt.
*) Hier der Konstruktor:
sub new {
my $class = shift;
my $self = {};
$self->{'param_1'} = @_ ;
[...]
bless $self, $class;
return $self;
}
Kann mir jemand den Grund/Sinn dieses Verhaltens erklären?
Viele Grüße,
nidhoegg