The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Class::Accessor::Fast::WithBuilder - Class::Accessor::Fast with lazy defaults

VERSION

0.01

DESCRIPTION

This module will require builders for each attribute defined. This means that adding attributes with this module, is something like this code from Moose:

    has age => (
        is => "ro", # or rw
        lazy => 1,
        builder => "_build_age",
    );

NOTE: All builders will be called as late as possible.

SYNOPSIS

    package Foo;
    use base qw(Class::Accessor::Fast::WithBuilder);

    Foo->mk_accessors(qw( name age ));

    sub _build_name { $_[0]->_croak("'name' attribute cannot be built!") }
    sub _build_age { 0 }

    print Foo->new->name; # BOOM!
    print Foo->new->age; # Will print "0"
    print Foo->new({ age => 123 })->age; # Will print "123"

METHODS

make_accessor

See "make_accessor" in Class::Accessor

make_ro_accessor

See "make_ro_accessor" in Class::Accessor

make_wo_accessor

This is not implemented. (See "make_wo_accessor" in Class::Accessor)

COPYRIGHT & LICENSE

AUTHOR

Jan Henning Thorsen jhthorsen at cpan.org