ePages 7.26.0 - DE_EPAGES/Core/API/Iterator.pm

Package DE_EPAGES::Core::API::Iterator

Iterator pattern

Example
my ($i, $Count) = (0, 1000);
my $DynamicSquareIterator = DE_EPAGES::Core::API::Iterator->new(
    Pull => sub { return $i <= $Count ? $i++ : undef },
    Count => $Count,
    Handle => sub { $_[1] * $_[1] }
);
while( my $Square = <$DynamicSquareIterator> ) {
    print "$Square\n";
}
@EXPORT_OK
ArrayIterator

Functions

ArrayIterator
count
new
next
wrap

ArrayIterator

Creates an iterator from an array reference.

Syntax
$Iterator = ArrayIterator( $aArray );
$Iterator = ArrayIterator( $aArray, $Handle );
Input
$aArray (ref.array)
array to iterate
$Handle (ref.code)
(optional) function that processes each item
Return
$Iterator (DE_EPAGES::Core::API::Iterator)
iterator object

count

returns the total number of items in the iterator. Note: not all iterators can determine the item count in advance.

Syntax
$Count = $Iterator->count;
Return
$Count (integer)
number of items

new

creates an iterator object

Syntax
$Iterator = DE_EPAGES::Core::API::Iterator->new( %Options )
Input
%Options (DE_EPAGES::Core::API::Iterator)
parameters
  • Pull - function that returns the next item; undef marks the last item - ref.code
  • Count - function that returns the total number of items or the total number as value - ref.code or integer
  • Handle - (optional) function that processes each item
  • Destroy - (optional) function that is called when the iterator object is released
Return
$Iterator (DE_EPAGES::Core::API::Iterator)
iterator object

next

returns the next item from the iterator. Returns undef after the last item.

Syntax
$Item = $Iterator->next;
Return
$Item (scalar)
next item

wrap

creates an iterator object by wrapping an existing iterator

Syntax
$Iterator = DE_EPAGES::Core::API::Iterator->wrap( %Options )
Example
my $Iterator = DE_EPAGES::Core::API::Iterator->wrap(
    Source => ArrayIterator( [ 1..9 ] ),
    Handle => sub { $_[1] * $_[1] }
);
Input
%Options (DE_EPAGES::Core::API::Iterator)
parameters
  • Source - source iterator - DE_EPAGES::Core::API::Iterator
  • Handle - function that processes each item
  • Destroy - (optional) function that is called when the iterator object is released
Return
$Iterator (DE_EPAGES::Core::API::Iterator)
iterator object