The Moose 2.1201 pod seems to say it is defined behavior:

 has +$name => %options
           This is variation on the normal attribute creator "has" which
           allows you to clone and extend an attribute from a superclass or
           from a role. Here is an example of the superclass usage: ...

Given that Moo is supposed to be Moose-compatible, the same
seems likely true for Moo.

--Chris


On Tue, Jul 22, 2014 at 5:16 PM, Diab Jerius <djer...@cfa.harvard.edu> wrote:
> I'm using Moo and would like to override a default value for a
> composed attribute after composing the role.
>
> This works (with Moose as well):
>
> use Moo;
>
> package R {
>     use Moo::Role;
>     has a => ( is => 'ro', default => 2 );
> }
>
>
> package P {
>     use Moo;
>     with 'R';
>     has '+a' => ( default => 3 );
> }
>
>
> say P->new->a;
>
>
> AFAIK, the Moo (and Moose) documentation only mentions this syntax
> when extending classes, not when composing roles.
>
> Is this behavior simply a side effect of implementation, or is it
> considered defined behavior?
>
>
> Thanks,
>
> Diab

Reply via email to