Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^3: NonMoose and (clean) inheritance

by tobyink (Canon)
on Mar 20, 2014 at 22:54 UTC ( [id://1079144]=note: print w/replies, xml ) Need Help??


in reply to Re^2: NonMoose and (clean) inheritance
in thread NonMoose and (clean) inheritance

Builders are just generally a better idea than defaults. (MooseX::Manual::BestPractices even tells you so.) They give you a nice clean way to override the behaviour in subclasses.

If you use Moo or MooseX::AttributeShortcuts then you can even do:

has foo => (is => 'ro', builder => sub { ... });

... and it will automatically get "translated" to:

has foo => (is => 'ro', builder => '_build_foo'); sub _build_foo { ... }

... so builders can be just as convenient as defaults are.

use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name

Replies are listed 'Best First'.
Re^4: NonMoose and (clean) inheritance
by eco (Acolyte) on Mar 21, 2014 at 06:42 UTC

    Thanks for the link of Moose best practices. I didn't know about that one! It's true that builders are preferred over defaults, but it also specifies "However, do use a default when the default is a non-reference.." which happens to be the case here. But hence, for now your solution with builders is the best I have...

    -- ecocode

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1079144]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (3)
As of 2024-03-30 03:53 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found