Documentation for method pull-one
assembled from the following pages:
Role: Iterator §
From Iterator
(Iterator) method pull-one §
Defined as:
method pull-one(Iterator: --> Mu)
This method stub ensures that classes implementing the Iterator
role provide a method named pull-one
.
The pull-one
method is supposed to produce and return the next value if possible, or return the sentinel value IterationEnd
if no more values could be produced.
my = (1 .. 3).iterator;say .pull-one; # OUTPUT: «1» say .pull-one; # OUTPUT: «2» say .pull-one; # OUTPUT: «3» say .pull-one.raku; # OUTPUT: «IterationEnd»
As a more illustrative example of its use, here is a count down iterator along with a simplistic subroutine re-implementation of the for
loop.
# works the same as (10 ... 1, 'lift off') does Iterator sub for( Iterable , --> Nil ) for( Seq.new(CountDown.new), ); # OUTPUT: «10987654321lift off»
It would be more idiomatic to use while
or until
, and a sigilless variable.
until IterationEnd =:= (my \pulled = .pull-one)