NAME
Attean::API::Iterator - Typed iterator
VERSION
This document describes Attean::API::Iterator version 0.023
DESCRIPTION
The Attean::API::Iterator role defines a common API for typed iterators. This package also defines several type-specific iterator roles:
These roles will automatically be applied to iterators during construction when appropriate.
ATTRIBUTES
The following attributes exist:
item_type
-
A string indicating the type of elements returned by the iterator.
REQUIRED METHODS
The following methods are required by the Attean::API::Iterator role:
next
-
Returns the next element from the iterator, or
undef
upon exhaustion.
METHODS
The Attean::API::Iterator role provides default implementations of the following methods:
elements
-
Returns a list of all remaining elements in the iterator.
map( \&mapper [, $result_type] )
-
Returns a new Attean::API::Iterator object with each element mapped using the supplied
&mapper
function. If the iterator elements are of the same type as those in the referent iterator, only a mapping function is required. Otherwise, the supplied Type::Tiny$result_type
object must indicate the new iterator's type information. grep( \&filter )
-
Returns a new Attean::API::Iterator object that filters elements from the referent iterator based on whether calling
&filter( $element )
for each$element
results in a true value. offset( $offset )
-
Returns the Attean::API::Iterator referent after skipping the first
$offset
elements. limit( $limit )
-
Returns a new Attean::API::Iterator object which returns the first
$limit
elements of the referent. materialize
-
Returns a new Attean::API::RepeatableIterator object containing all the elements from the referent.
debug( [$name] )
-
Print each item as it is consumed (with the string generated by
as_string
), prepended by$name
.
BUGS
Please report any bugs or feature requests to through the GitHub web interface at https://github.com/kasei/attean/issues.
SEE ALSO
Attean::API::RepeatableIterator
AUTHOR
Gregory Todd Williams <gwilliams@cpan.org>
COPYRIGHT
Copyright (c) 2014--2019 Gregory Todd Williams. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.