Kaj je iterator?

Iterator je konstrukcija računalniškega jezika, ki omogoča programu, da sistematično bere skupino podatkovnih vrednosti ali kosov informacij. Iteratorji omogočajo tudi individualni dostop do vsakega člana skupine, ne da bi pri tem vplivali na preostanek skupine. Uporabljajo se v številnih skriptnih in programskih jezikih, vključno s C++, Java, PHP in Perl. Njihova izvedba je neodvisna od objektov, ki jih skenirajo, tako da lahko skenirajo katero koli vrsto skupine predmetov.

Potovanje skozi skupino predmetov z iteratorjem se običajno imenuje iteracija ali prehod. V večini računalniških jezikov se iteratorji uporabljajo za prečkanje skupin povezanih predmetov, imenovanih zbirke. Njihove izvedbe so zelo prilagodljive in jih je mogoče uporabiti z zbirkami katere koli velikosti. Na splošno so varnejši od preprostega dostopa do elementov v zbirki, ker je njihov obseg omejen na elemente v zbirki. Čeprav je še vedno možen dostop do indeksa zunaj meja, je malo verjetno, če je iterator pravilno uporabljen.

Iteratorji so definirani, inicializirani in obdelani v pomnilniku različno, odvisno od računalniškega jezika, v katerem se uporabljajo. Nasprotno pa je splošna sintaksa zanje podobna v večini jezikov. Obstajata dve različni vrsti sintakse, ki ju je mogoče uporabiti za iteratorje, definirane kot eksplicitne ali implicitne.

Eksplicitni iteratorji vključujejo ustvarjanje predmeta iteratorja, ki se nato uporablja v zanki prehoda nad elementi zbirke. Implicitni iteratorji vključujejo posebno vrsto strukture zanke, ki ustvari objekt iteratorja, ne da bi bil vnaprej določen. Ne glede na to, ali se eksplicitni ali implicitni iteratorji uporabljajo za določeno prečkanje ali ne, je običajno odvisno od želja programerja, saj so razlike v količini kode ali zmogljivosti med njimi zanemarljive. Največja razlika med eksplicitnimi in implicitnimi iteratorji je v tem, da eksplicitni iteratorji prikazujejo ustvarjanje iteratorja v izvorni kodi, medtem ko implicitni iteratorji tega ne prikazujejo.

Kadar koli je na voljo zbirka predmetov, se lahko za njihovo skeniranje uporabi iterator. Glede na zmožnosti računalniškega jezika se lahko iteratorji uporabljajo za matrike, zemljevide, sezname in številne druge vrste zbirk. Iteratorji so razmeroma vseprisotna značilnost programskih jezikov in večina običajnih jezikov ima na voljo določeno vrsto funkcionalnosti. Nekateri računalniški jeziki dovoljujejo iteratorje z dodatnimi funkcijami, kot so omejitve števila dostopov do elementa. Ker te funkcije niso univerzalne, včasih obstajajo načini, na katere jih je mogoče izvesti neodvisno od samih iteratorjev.