table of contents
MooseX::Iterator(3) | User Contributed Perl Documentation | MooseX::Iterator(3) |
NAME¶
MooseX::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'
2017-10-03 | perl v5.38.2 |