Thread OOP: Einem vorhandenen Objekte weitere Hashes hinzufügen (6 answers)
Opened by Phrosch at 2019-12-05 04:52

Phrosch
 2019-12-05 04:52
#190946 #190946
User since
2012-03-20
9 articles
BenutzerIn
[default_avatar]
Hallo zusammen,

wie lassen sich einem bereits erzeugten Objekt weitere Schlüssel-/Wert-Paare hinzufügen? Die Methode samt Aufruf sieht wie folgt aus:

Methode:
Code: (dl )
1
2
3
4
5
6
sub new {
my $class = shift @_;
my $self = { @_ };
bless $self, $class;
return $self;
}



Erzeugen des Objekts mit Argumenten:
Code: (dl )
my $obj  = MyClass->new(message => "Guten Morgen", nachname => "Wall", vorname => "Larry");


ergibt folgende Instanz:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
MyClass  {
public methods (3) : add, greet, new
private methods (0)
internals: {
message "Hello",
nachname "Wall",
name "nachname",
vorname "Larry"
}
}


Wie lassen sich dem bereits vorhandenen Objekt (beliebig viele) nun weitere Schlüssel-/Wert-Paare hinzufügen?

Alle Variationen der folgenden Methode führen nicht zum gewünschten Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
9
sub add {
my $self = shift;
$self->{@_} = { @_ };
$self->{$_[0]} = { @_ };
if (@_) {
$self->{ID} = shift(@_);
}
return $self->{@_};
}

Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
MyClass  {
public methods (3) : add, greet, new
private methods (0)
internals: {
4 {
bla "blubb",
foo "bar"
},
foo {
bla "blubb",
foo "bar"
},
ID "foo",
message "Guten Morgen",
nachname "Wall",
vorname "Larry"
}
}


Gewünschtes Ergebnis:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
MyClass  {
public methods (3) : add, greet, new
private methods (0)
internals: {
bla "blubb",
foo "bar",
message "Guten Morgen",
nachname "Wall",
vorname "Larry"
}
}


Für die Mühe besten Dank im Voraus.

P.
Last edited: 2019-12-05 10:49:33 +0100 (CET)

View full thread OOP: Einem vorhandenen Objekte weitere Hashes hinzufügen