Sobes.tech
Middle

Čo je metóda next v iterátoroch a ako sa implementuje?

sobes.tech AI

Odpoveď od AI

Metóda next v iterátoroch je zodpovedná za získanie nasledujúceho prvku sekvencie. Zvyčajne vracia aktuálny prvok a posúva vnútorný ukazovateľ na ďalší. Ak už nie sú žiadne prvky, metóda by mala signalizovať koniec iterácie (napríklad vyhodením výnimky StopIteration v Pythone alebo vrátením špeciálnej hodnoty).

V Go iterátory nie sú implementované tak explicitne ako v Pythone, ale možno vytvoriť štruktúru s metódou Next() bool na prechod na ďalší prvok a metódou Value() T na získanie aktuálnej hodnoty.

Príklad v Go:

package main
import "fmt"

type IntIterator struct {
    data []int
    pos  int
}

func (it *IntIterator) Next() bool {
    if it.pos < len(it.data) {
        it.pos++
        return true
    }
    return false
}

func (it *IntIterator) Value() int {
    return it.data[it.pos-1]
}

func main() {
    it := IntIterator{data: []int{10, 20, 30}}
    for it.Next() {
        fmt.Println(it.Value())
    }
}

Tu, Next posunie pozíciu a vráti true, ak je ďalší prvok, a Value vráti aktuálny prvok.