Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot

rebuilding lazy Moose attributes

by jabowery (Beadle)
on Aug 20, 2013 at 18:10 UTC ( #1050219=perlquestion: print w/ replies, xml ) Need Help??
jabowery has asked for the wisdom of the Perl Monks concerning the following question:

A solution offered to the problem of change propagation in lazy Moose attributes was to use lazy_build => 1 in the lazy attribute and then, in the attributes referenced by the builder:

has 'attr1' => ( ... trigger => \&clear_attr2, );
However, this requires maintaining back-references in the source code that could have been created along with the memoized value at build time. Is there a MooseX that does this automatically?

Replies are listed 'Best First'.
Re: rebuilding lazy Moose attributes
by tobyink (Abbot) on Aug 20, 2013 at 21:48 UTC

    I tend to use 'ro' attributes as much as possible and thus avoid things like this.

    I have a module Trait::Attribute::Derived that offers a bunch of sugar for deriving one attribute from another, but it doesn't offer this feature. Perhaps it should?

    package Cow { use Moo; has name => (is => 'lazy', default => sub { 'Mooington' }) } say Cow->new->name

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://1050219]
Approved by Jim
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (11)
As of 2016-08-25 18:40 GMT
Find Nodes?
    Voting Booth?
    The best thing I ever won in a lottery was:

    Results (362 votes). Check out past polls.