inherit-disc.txt
use feature qw/say/;
use MooseX::Declare;
class Foo {
has x => ( is => 'rw', isa => 'Num', default => 1 );
has y => ( is => 'rw', isa => 'Num', default => 2 );
has z => ( is => 'rw', isa => 'Num', default => 3 );
}
class Foo::Bar extends Foo {
has '+z' => ( default => 42 );
before z (Num $num?) {
if(defined $num) {
warn "z will get a new value. Old value: ", $self->z, "\n";
}
}
after z (Num $num?) {
if(defined $num) {
warn "z got a new value: $num\n";
}
}
}
say Foo->new->z; # 3
say Foo::Bar->new->z; # 42
say Foo::Bar->new->x; # 1
say Foo::Bar->new->z(0); # 0 - will also print (pretty useless) debug info