![]() |
![]()
| ![]() |
![]()
NAMESub::HandlesVia::Declare - declare delegations at compile-time SYNOPSISuse 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. DESCRIPTIONUseful for Object::Pad and kind of nice for Class::Tiny. Basically any class builder than does its stuff at compile time. Object::Paduse 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', ); } Class::Tinypackage 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', ); BUGSPlease report any bugs to <https://github.com/tobyink/p5-sub-handlesvia/issues>. SEE ALSOSub::HandlesVia. AUTHORToby Inkster <tobyink@cpan.org>. COPYRIGHT AND LICENCEThis 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. DISCLAIMER OF WARRANTIESTHIS 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.
|