Name |
Mo::build - Adds the build feature to Mo
use Mo qw'build'; has name => ( is => 'rw' );
sub BUILD { my $self = shift; ... }
Adds the BUILD
feature to Mo when imported.
If a sub called BUILD
exists on the
package, it will be executed on $self
during instantiation.
Any non-lazy default
and builder
attributes, as well as
any value passed to new
will already be set when BUILD
is called.
package ABCD; use Mo qw'build builder default'; use feature 'say';
has a => (default => 1234, lazy => 0); has b => (builder => '_b', lazy => 0); has c => (is => 'rw'); has d => (is => 'rw');
sub _b { 'blue' }
sub BUILD { my ($self) = @_; say $self->{a}; say $self->{b}; say $self->{c}; say 'undef' unless defined $self->{d}; }
ABCD->new(c => 'days') # => 1234 # blue # days # undef
Name |