Thread Moose-Attribut weiterleiten
(7 answers)
Opened by Martin at 2014-04-28 00:04
Hello Perl-Community.de,
nach ein paar Jahren Abstinenz bin ich wieder zu Perl zurückgekehrt, habe Moose gelernt und finde es super. Ich habe jedoch gerade folgendes Problem, zu dem ich leider nichts gefunden habe. Ich habe eine Klasse: Code (perl): (dl
)
1 2 3 4 5 6 7 8 package ABC; use Moose; has 'container' => ( is => 'rw', isa => 'ArrayRef', default => sub { return [ 0..10 ] }, ); Und würde gerne ein paar Accessoren erstellen, die auf die Werte in dem Array weiterleiten. Die Daten des ArrayRefs in Container kommen von außen und sie können sich somit jederzeit ändern. Also funktioniert der Ansatz über einen Builder leider nicht. In vor-Moose-Zeiten habe ich sowas wie das folgende verwendet (gekürzt): Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 sub wertX { my $self = shift; if( @_ ) { if( $_[0] =~ /^[wb]$/ ) { $self->container->[11] = $_[0]; } else { confess "Invalid value $_[0] for attribute wertX"; } } return $self->container->[11] //= 'w'; # defaultwert } Ich würde dies jedoch lieber mit Moose machen, habe jedoch noch keinen Weg dafür gefunden, ausser wirklich häßliche Sachen mit around 'wertX'. Könnt Ihr mir dabei bitte helfen? Viele Grüße, Martin Last edited: 2014-04-28 00:27:13 +0200 (CEST) |