Thread Moose-Attribut weiterleiten
(7 answers)
Opened by Martin at 2014-04-28 00:04
Ich denke, Definition vor Implementierung ist Best-Practice, aber nicht zwingend erforderlich (auch wenn es Sinn macht).
Ich habe es vorerst folgendermaßen gelöst bekommen, zwar umständlich, aber es scheint auf den ersten Blick zu funktionieren (ich schreibe die Builder aus Übersichtsgründen hier direkt nach der Definition) Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 has 'container' => ( traits => ['Array'], is => 'rw', isa => 'ArrayRef', lazy_build => 1, handles => { get_by_id => 'get', }, ); sub _build_container { return [ 'w', 1 .. 145 ]; } has 'color' => ( is => 'rw', isa => 'Str', lazy_build => 1, trigger => sub { $_[0]->container->[0] = $_[1] }, ); sub _build_color { return shift->get_by_id(0) || 'w'; } has 'counter' => ( traits => ['Counter'], is => 'rw', isa => 'Num', lazy_build => 1, handles => { inc_counter => 'inc', dec_counter => 'dec', reset_counter => 'reset', }, trigger => sub { $_[0]->container->[145] = $_[1] }, ); sub _build_counter { return shift->get_by_id( 145 ) || 1; } Aber vermutlich ist die Erstellung eines Traits der bessere Weg. Last edited: 2014-04-30 17:50:58 +0200 (CEST) |