Cursus Raku / Programmatio functionalis, simultanea, reactiva et retialis / Programmatio functionalis / Iteratores
Protocollum iteratorum
Omnis valor per quem percurrere potes — index, intervallum, ordo —
iteratorem tibi tradere potest methodo .iterator.
Iterator unam methodum essentialem habet, pull-one, quae
valorem sequentem quotiens eam vocas reddit:
my $it = (10, 20, 30).iterator;
say $it.pull-one; # 10
say $it.pull-one; # 20
say $it.pull-one; # 30Cum valores desinunt, pull-one speciale signum,
IterationEnd, loco veri elementi reddit. Ab eodem
$it unum valorem amplius petens illud vides:
say $it.pull-one =:= IterationEnd; # TrueOperator =:= idem obiectum probat, quo
modo signum agnoscis. Illa particula in anulo refert, ubi valorem
extractum servare et illum probare debes. Si illum per
= assignas, valor in receptaculum cadit et
comparatio tandem receptaculum potius quam IterationEnd
inspicit. Remedium est per := ligare, ita
ut variabilis simpliciter sit quidquid pull-one
reddidit:
my $it = <a b c>.iterator;
loop {
my $v := $it.pull-one; # liga, ne assigna
last if $v =:= IterationEnd;
say $v;
}Anulus a, b, c imprimit et
deinde consistit. Hoc est exacte quod anulus for sub pallio
pro te agit: .iterator in re per quam percurris vocat et
pull-one vocare pergit donec IterationEnd
inveniat. Illud manu scribere raro opus est, sed semel id agere ostendit
iteratores — non indices — esse id per quod Raku revera percurrit.
Exercitatio
Sequuntur 1 quiz de contentis huius argumenti.
Navigatio cursus
← Iteratores | Quiz — Protocollum iteratorum →
💪 Vel recta ad exercitationem
huius sectionis i.