Thread Wie programmiere ich OOP & Moose? (28 answers)
Opened by hlubenow at 2016-12-13 09:58

Gast janus
 2016-12-13 07:27
#185766 #185766
Moin,

über AUTOLOAD kannst Du das auch mit native Perl realisieren:

Code (perl): (dl )
1
2
3
4
5
6
7
# Macht möglich, die Attribute als Methode abzufragen
# Verändert NICHT die Attribute der Instanz, wenn Argumente
sub AUTOLOAD{
    my $self  = shift;
    my $attr = our $AUTOLOAD =~ /(\w+)$/ ? $1 : undef;
    $self->{$attr};
}


D.h., in der Anwendung kann ein namentlich genanntes Atribut als Methode betrachtet werden:

Code (perl): (dl )
1
2
print $obj->name; 
# gibt Inhalt Attribute name aus


Bei sog. Setter jedoch ist es oft so, dass eine Veränderung eines Attributes die Veränderung anderer Attribute nach sich zieht.

PS: Was Moose mit AUTOLOAD am Hut hat, weiß ich nicht, aber ein weiß ich: AUTOLOAD ist eines der mächtigsten Werkzeuge in Perl. In meinem Framework hab ich eine ganze Factory über AUTOLAOD realisiert, damit werden beliebige Klassen und viel Code über eigene Methoden nur dann eingebunden, wenn sie tatsächlich gebraucht werden: zur Laufzeit.

Alles Dinge für lange Winterabende ;)
Last edited: 2016-12-13 09:35:24 +0100 (CET)

View full thread Wie programmiere ich OOP & Moose?