Thread OOP: Einem vorhandenen Objekte weitere Hashes hinzufügen
(6 answers)
Opened by Phrosch at 2019-12-05 04:52
Es ist zum grundlegenden Verständnis hilfreich, Vorrangklammern einzufügen.
Code (perl): (dl
)
return(bless(\%args => $class)); Ich muss zwei falsche Annahmen korrigieren: Quote bless möchte als erstes Argument eine Referenz (hier: Hashreferenz), keinen Hash. Ich erzeuge sie mit \, in deinem Code erzeugst du sie mit dem {}-Zirkumfixoperator. Quote => ist keine Zuweisung, sondern das dicke Komma. Ich weiß nicht, woher ich diese Gewohnheit im Zusammenhang mit bless habe, aber ich bin nicht allein damit. Ein gewöhnliches Komma ist auch in Ordnung hier. (Das zweite Argument von bless ist der Klassenbezeichner, wie du weißt.) In der offiziellen Doku ist nur das gewöhnliche Komma zu finden. Tut mir leid für die Verwirrung, das war nicht beabsichtigt; ich bin nicht davon ausgegangen, dass du => nicht kennst. ---- Quote Richtig, der Bezeichner wird am Ende des Konstruktors verworfen, weil die dazugehörige Variable aufhört, zu existieren. Die damit erzeugte Hashreferenz überlebt, weil der Wert an den Aufrufer zurückgegeben wird; sie ist per se unbenannt und erhält immer wieder nur einen neuen Bezeichner, wenn sie als Wert einer Variable zugewiesen wird, z.B. als Argument in einer anderen Subroutine/Methode landet, dort typischerweise $self. |