NAME¶
Net::CLI::Interact::Role::Iterator - Array-based Iterator
VERSION¶
version 2.142720
SYNOPSIS¶
my $count = $iter->count;
$iter->reset;
while ( $iter->has_next ) {
print $iter->next;
}
DESCRIPTION¶
This module implements an array-based iterator which may be mixed-in to add
management of a sequence of elements and processing of that sequence.
The iterator is inspired by MooseX::Iterator but limited to arrays and adds many
other facilities. The following section describes the methods provided by this
class.
USAGE¶
The slot used for storing iterator elements is named "_sequence" and
you should write your consuming class to marshall data into this slot, perhaps
via "BUILD" or "init_arg". For example:
has '+_sequence' => (
isa => 'ArrayRef[Thingy]',
init_arg => 'things',
);
INTERFACE¶
count¶
The number of elements currently stored in the iterator. Note that this is of
course not the same as the index of the last item in the iterator (which is
0-based)
first¶
Returns the first item in the iterator.
last¶
Returns the last item in the iterator.
item_at( $pos )¶
Returns the item at the given position in the iterator, or throws an exception
if $pos is past the end of the iterator. The position is 0-based.
insert_at( $pos, $iter )¶
Inserts the contents of the passed iterator starting
at (not
after) the position given. The passed iterator must also be a consumer
of this role. The position is 0-based.
append( $iter )¶
Shorthand for "insert_at" when you want to add the contents of the
passed iterator
after the end of the sequence.
idx( $pos? )¶
Returns the index (0-based) of the current iterator cursor, or sets the cursor
if a position (again, 0-based) is passed.
An exception is thrown if you attempt to read the cursor position before having
read any elements from the iterator, or if the iterator is empty.
next¶
Returns the next item in the iterator sequence, and advances the cursor. Throws
an exception if you have already reached the end of the sequence.
has_next¶
Returns true if there are further elements to be read from the iterator.
peek¶
Returns the next item in the sequence without advancing the position of the
cursor. It returns "undef" if you are already at the end of the
sequence.
reset¶
Resets the cursor so you can iterate through the sequence of elements again.
AUTHOR¶
Oliver Gorwits <oliver@cpan.org>
COPYRIGHT AND LICENSE¶
This software is copyright (c) 2014 by Oliver Gorwits.
This is free software; you can redistribute it and/or modify it under the same
terms as the Perl 5 programming language system itself.