Class::Accessor::Lite::Lazy - Class::Accessor::Lite with lazy accessor feature
package MyPackage;
use Class::Accessor::Lite::Lazy (
rw_lazy => [
# implicit builder method name is "_build_foo"
qw(foo foo2),
# or specify builder explicitly
{
xxx => 'method_name',
yyy => sub {
my $self = shift;
...
},
}
],
ro_lazy => [ qw(bar) ],
# Class::Accessor::Lite functionality is also available
new => 1,
rw => [ qw(baz) ],
);
# or if you specify all attributes' builders explicitly
use Class::Accessor::Lite::Lazy (
rw_lazy => {
foo => '_build_foo',
bar => \&_build_bar,
}
);
sub _build_foo {
my $self = shift;
...
}
sub _build_bar {
my $self = shift;
...
}
Class::Accessor::Lite::Lazy provides a "lazy" accessor feature to Class::Accessor::Lite.
If a lazy accessor without any value set is called, a builder method is called to generate a value to set.
As Class::Accessor::Lite, the use statement provides the way to create lazy accessors.
-
rw_lazy => \@name_of_the_properties | \%properties_and_builders
Creates read / write lazy accessors.
-
ro_lazy => \@name_of_the_properties | \%properties_and_builders
Creates read-only lazy accessors.
-
new, rw, ro, wo
Same as Class::Accessor::Lite.
-
Class::Accessor::Lite::Lazy->mk_lazy_accessors(@name_of_the_properties)
Creates lazy accessors in current package.
-
Class::Accessor::Lite::Lazy->mk_ro_lazy_accessors(@name_of_the_properties)
Creates read-only lazy accessors in current package.
As seen in SYNOPSIS, each attribute is specified by either a string or a hashref.
In the string form $attr
you specify builders implicitly, the builder method name for the attribute $attr is named _build_$attr.
In the hashref form { $attr => $method_name | \&builder }
you can explicitly specify builders, each key is the attribute name and each value is
either a string which specifies the builder method name or a coderef itself.
motemen [email protected]
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.