View on
MetaCPAN
perlancar > Class-Accessor-Array-Slurpy-0.020 > Class::Accessor::Array::Slurpy

Download:
Class-Accessor-Array-Slurpy-0.020.tar.gz

Dependencies

Annotate this POD

Website

View/Report Bugs
Module Version: 0.020   Source  

NAME ^

Class::Accessor::Array::Slurpy - Generate accessors/constructor for array-based object (supports slurpy attribute)

VERSION ^

This document describes version 0.020 of Class::Accessor::Array::Slurpy (from Perl distribution Class-Accessor-Array-Slurpy), released on 2017-09-13.

SYNOPSIS ^

In lib/Your/Class.pm:

 package Your::Class;
 use Class::Accessor::Array::Slurpy {
     accessors => {
         foo => 0,
         bar => 1,
         baz => 2,
     },
     slurpy_attribute => 'baz',
 };

In code that uses your class:

 use Your::Class;

 my $obj = Your::Class->new;
 $obj->foo(1);
 $obj->bar(2);
 $obj->baz([3,4,5]);

$obj is now:

 bless([1, 2, 3, 4, 5], "Your::Class");

DESCRIPTION ^

This module is a builder for array-backed classes. It is the same as Class::Accessor::Array except that you can define your last (in term of the index in array storage) attribute to be a "slurpy attribute", meaning it is an array where its elements are stored as elements of the array storage. There can be at most one slurpy attribute and it must be the last.

Note that without a slurpy attribute, you can still store arrays or other complex data in your attributes. It's just that with a slurpy attribute, you can keep a single flat array backend, so the overall number of arrays is minimized.

An example of application: tree node objects, where the first attribute (array element) is the parent, then zero or more extra attributes, then the last attribute is a slurpy one storing zero or more children. This is how Mojo::DOM stores its HTML tree node, for example.

HOMEPAGE ^

Please visit the project's homepage at https://metacpan.org/release/Class-Accessor-Array-Slurpy.

SOURCE ^

Source repository is at https://github.com/perlancar/perl-Class-Accessor-Array-Slurpy.

BUGS ^

Please report any bugs or feature requests on the bugtracker website https://rt.cpan.org/Public/Dist/Display.html?Name=Class-Accessor-Array-Slurpy

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature.

SEE ALSO ^

Other class builders for array-backed objects: Class::Accessor::Array, Class::XSAccessor::Array, Class::ArrayObjects, Object::ArrayType::New.

AUTHOR ^

perlancar <perlancar@cpan.org>

COPYRIGHT AND LICENSE ^

This software is copyright (c) 2017 by perlancar@cpan.org.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.

syntax highlighting: