In this example, I have defined two classes - MyValue, and MyValueBool.
MyValueBool is meant to do the same thing as MyValue, except that the
value is restricted to a boolean.

The problem is that the 'around' function only gets called when using
the base class.


This succeeds - around 'value' is called.

$f = MyValue->new ; 
$n = $f->value ;


This fails - around 'value' is not called.

$f = MyValueBool->new ; 
$n = $f->value ;

Without repeating the 'around' routine, what should I do?

Thanks,

Peter





package MyValue ;
use Mouse ; 
has 'value' => ( is => 'rw' ) ;

around 'value' => sub {
    print "IN AROUND\n" ; 
    return 1 ; 
} ; 

__PACKAGE__->meta->strict_constructor(1);
__PACKAGE__->meta->make_immutable;
no Mouse ;

package MyValueBool ;
use Mouse ; 
extends 'MyValue' ;
has '+value' => (
                 isa     => 'Bool',
                );

__PACKAGE__->meta->strict_constructor(1);
__PACKAGE__->meta->make_immutable;
no Mouse ;
1;

package main ; 
my $f = MyValueBool->new ; 
my $n = $f->value ; 



Reply via email to