NAME Role::TinyCommons::Iterator - A basic iterator VERSION This document describes version 0.001 of Role::TinyCommons::Iterator (from Perl distribution Role-TinyCommons-Iterator), released on 2021-04-18. SYNOPSIS In your class: package YourClass; use Role::Tiny; with 'Role::TinyCommons::Iterator'; sub new { ... } # implement required methods sub get_next_item { ... } sub try_get_next_item { ... } sub has_next_item { ... } In your class user's code: use YourClass; my $obj = YourClass->new(...); # iterate my @items; while ($obj->has_next_item) { push @items, $obj->get_next_item; } DESCRIPTION This role provides a basic iterator that's unidirectional, non-resettable. For a bidirectional iterator, see Role::TinyCommons::Iterator::Bidirectional. For a resettable, see Role::TinyCommons::Iterator::Resettable. REQUIRED METHODS get_next_item Usage: while ($obj->has_next_item) { push @items, $obj->get_next_item; } Get the next item. Must throw an exception (string based, "StopIteration") if there is no more item to get. Usually used with "has_next_item" to check first if there is stil another item to get. has_next_item Usage: while ($obj->has_next_item) { push @items, $obj->get_next_item; } Check whether iterator has another item. get_iterator_pos Usage: my $pos = $obj->get_iterator_pos; Return the iterator's current position, which is a non-negative integer. The first item has the position 0. PROVIDED METHODS Currently none. HOMEPAGE Please visit the project's homepage at . SOURCE Source repository is at . BUGS Please report any bugs or feature requests on the bugtracker website When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. SEE ALSO This role is loosely based on Array::Iterator, but the method names have been made with "verb"+"object" naming style to be more verbose and less likely clash with your other methods. Both exception-based and undef-based signalling of out of items are provided for convenience. The "StopIteration" name comes from Python. AUTHOR perlancar COPYRIGHT AND LICENSE This software is copyright (c) 2021 by perlancar@cpan.org. This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.