Net::C...erator(3pm)

πŸ“¦
version 2.400002 Β· 6 versions
, in debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

✨ NAME ✨

Net::CLI::Interact::Role::Iterator β€” it's an Array-based Iterator, bestie πŸ’–


πŸŽ€ SYNOPSIS πŸŽ€

okay so literally the whole vibe in four lines:

my $count = $iter->count;

$iter->reset;
while ( $iter->has_next ) {
   print $iter->next;
}

πŸ¦‹ DESCRIPTION πŸ¦‹

So this module implements an array-based iterator, and the whole point is that it can be mixed-in to your class so you get management of a sequence of elements plus the processing of that sequence. Two-for-one, no cap 🫢

The iterator is inspired by MooseX::Iterator, but it's limited to arrays and it adds so many other facilities on top. The section below (that's USAGE β†’ INTERFACE, keep scrolling) describes the methods this class hands you.


🌸 USAGE 🌸

The slot used for storing iterator elements is named _sequence, and you should write your consuming class to marshall data into this slot, maybe via BUILD or init_arg. For example:

has '+_sequence' => (
   isa => 'ArrayRef[Thingy]',
   init_arg => 'things',
);

it's giving very much "wire it up yourself, queen" πŸ’…


πŸ‘‘ 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) β€” do not confuse them, that's the classic trap πŸ™ˆ

πŸ’« 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. literally the lazy-girl shortcut and we love her for it ✨

πŸ’« 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. no cursor for you, bestie πŸ’€

πŸ’« 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. your little "is there more?" check-in, iconic πŸ₯°

πŸ’« 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. round two, let's goooo πŸ”₯


perl v5.36.0 Β· 2023-10-28

mwah, that's the whole page, go forth and iterate πŸ’–πŸŽ€πŸ¦‹βœ¨πŸ‘‘

πŸ“¦ where this page comes from