MooseX::Iterator(3) User Contributed Perl Documentation MooseX::Iterator(3)NAMEMooseX::Iterator - Iterate over collections
SYNOPSIS
Access the Iterator directly:
use Moose;
use MooseX::Iterator;
my $iter = MooseX::Iterator::Array->new( collection => [ 1, 2, 3, 4, 5, 6 ] );
my $count = 1;
while ( $iter->has_next ) {
print $iter->next;
}
Or use the meta class:
package TestIterator;
use Moose;
use MooseX::Iterator;
has collection => (
is => 'ro',
isa => 'HashRef',
default => sub { { one => '1', two => '2', three => '3' } },
);
has iter => (
metaclass => 'Iterable',
iterate_over => 'collection',
);
no Moose;
package main;
use Data::Dumper;
my $test = TestIterator->new;
my $iter = $test->iter;
while ( $iter->has_next ) {
my $next = $iter->next;
print $next->{'key'} . "\n";
print $next->{'value'} . "\n";
}
DESCRIPTION
This is an attempt to add smalltalk-like streams to Moose. It currently
works with ArrayRefs and HashRefs.
next
The next method provides the next item in the colletion.
For arrays it returns the element of the array
For hashs it returns a pair as a hashref with the keys: key and value
has_next
The has_next method is a boolean method that is true if there is
another item in the colletion after the current item. and falue if
there isn't.
peek
The peek method returns the next item without moving the state of
the iterator forward. It returns undef if it is at the end of the
collection.
reset
Resets the cursor, so you can iterate through the elements again.
Subclassing MooseX::Iterator::Meta::Iterable
When subclassing MooseX::Iterator::Meta::Iterable for your own
iterators override
MooseX::Iterator::Meta::Iterable::_calculate_iterator_class_for_type
to returns the name of the class that iterates over your new
collection type. The class must implement the
MooseX::Iterator::Role role.
AUTHOR
Robert Boone <rlb@cpan.org>
And thank you to Steven Little (steven) and Matt Trout (mst) for the
help and advice they gave.
CONTRIBUTORS
Johannes Plunien
Code Repository
Git - http://github.com/rlb3/moosex-iterator/tree/master
COPYRIGHT AND LICENSE
This library is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
POD ERRORS
Hey! The above document had some coding errors, which are explained
below:
Around line 96:
'=item' outside of any '=over'
perl v5.14.1 2009-07-05 MooseX::Iterator(3)