|P is for Practical|
Moose: apply Role at Runtime (build vs. default) [solved]by Brutha (Friar)
|on Apr 02, 2013 at 12:42 UTC||Need Help??|
Brutha has asked for the
wisdom of the Perl Monks concerning the following question:
Hello fellow monks,
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!"