在角色迭代器中§
有关方法 pull-one 的主要文档,请参阅上下文。
method pull-one(Iterator: --> Mu)
此方法存根确保实现 Iterator
角色的类提供名为 pull-one
的方法。
pull-one
方法应该在可能的情况下生成并返回下一个值,如果无法生成更多值,则返回哨兵值 IterationEnd
。
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»
作为其用法的更具说明性的示例,这里有一个倒计时迭代器以及 for
循环的简化子例程重新实现。
# works the same as (10 ... 1, 'lift off')does Iteratorsub for( Iterable , --> Nil )for( Seq.new(CountDown.new), ); # OUTPUT: «10987654321lift off»
更惯用的做法是使用 while
或 until
,以及一个无符号变量。
until IterationEnd =:= (my \pulled = .pull-one)