Perl: the Markov chain saw | |
PerlMonks |
Moose: apply Role at Runtime (build vs. default) [solved]by Brutha (Friar) |
on Apr 02, 2013 at 12:42 UTC ( [id://1026677]=perlquestion: print w/replies, xml ) | Need Help?? |
Brutha has asked for the wisdom of the Perl Monks concerning the following question: Hello fellow monks, after working through Moose Best Practices and various discussions, I decided to use build instead of default for my attributes. So far so good. Now I have a role with lazy attributes that I apply at runtime with Moose::Util qw(apply_all_roles). This also works fine. With one exception. I get the message "You cannot have a lazy attribute (myattr) without specifying a default value for it". Calling the _build function from default works. From Perl common sense I would say, the object is already built before the Role is applied. So you have to use default values for initialization. And so I do something like:
Did I miss something? What are best practises in my case? Thank you for your thoughts Update: see comment below, it's a typo. It is a "builder" instead of "build" And it came to pass that in time the Great God Om spake unto Brutha, the Chosen One: "Psst!"
Back to
Seekers of Perl Wisdom
|
|