in reply to NonMoose and (clean) inheritance
Not quite sure what you're asking. Are you looking for a way to change the default for an attribute in a subclass?
package ClassB; use Moose; extends 'ClassA'; has '+param2' => (default => 'PARAM2-CLASSB'); around FOREIGNBUILDARGS => sub { my $orig = shift; my $class = shift; return $class->$orig(param1=>'PARAM1-CLASSB',@_); };
Or better yet, use builders instead of defaults:
package ClassA; use Moose; use MooseX::NonMoose; extends 'aNonMooseClass'; has 'param2' => ( isa=>'Str', builder => '_build_param2'); sub FOREIGNBUILDARGS { my $class = shift; my %args = @_; my $param1 = exists $args{param1} ? $args{param1} : $class->_build +_param1; return ( $param1 ); } sub _build_param1 { return 'Default param1 in class A'; } sub _build_param2 { return 'Default param2 in class A'; } package ClassB; use Moose; extends 'ClassA'; sub _build_param1 { return 'PARAM1-CLASSB'; } sub _build_param2 { return 'PARAM2-CLASSB'; }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: NonMoose and (clean) inheritance
by eco (Acolyte) on Mar 20, 2014 at 21:08 UTC | |
by tobyink (Canon) on Mar 20, 2014 at 22:54 UTC | |
by eco (Acolyte) on Mar 21, 2014 at 06:42 UTC |