| Sub::HandlesVia::Declare(3pm) | User Contributed Perl Documentation | Sub::HandlesVia::Declare(3pm) |
Sub::HandlesVia::Declare - declare delegations at compile-time
use Sub::HandlesVia::Declare( $attr, $via => %delegations );
This is roughly equivalent to the following:
use Sub::HandlesVia qw(delegations);
BEGIN {
delegations(
attribute => $attr,
handles_via => $via,
handles => \%delegations,
);
};
Except it doesn't import the "delegations" function into your namespace.
Useful for Object::Pad and kind of nice for Class::Tiny. Basically any class builder than does its stuff at compile time.
use Object::Pad;
class Kitchen {
has @foods;
use Sub::HandlesVia::Declare '@foods', Array => (
all_foods => 'all',
add_food => 'push',
);
}
If an attribute begins with a '@' or '%', $via can be omitted.
use Object::Pad;
class Kitchen {
has @foods;
use Sub::HandlesVia::Declare '@foods', (
all_foods => 'all',
add_food => 'push',
);
}
package Kitchen;
use Class::Tiny {
foods => sub { [] },
drinks => sub { [ 'water' ] },
};
use Sub::HandlesVia::Declare 'foods', Array => (
all_foods => 'all',
add_food => 'push',
);
use Sub::HandlesVia::Declare 'drinks', Array => (
all_drinks => 'all',
add_drink => 'push',
);
Please report any bugs to <https://github.com/tobyink/p5-sub-handlesvia/issues>.
Sub::HandlesVia.
Toby Inkster <tobyink@cpan.org>.
This software is copyright (c) 2022 by Toby Inkster.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.
THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
| 2023-04-09 | perl v5.36.0 |