Sobes.tech
Middle

Kas yra next metodas iteratoriuose ir kaip jis įgyvendinamas?

sobes.tech AI

Atsakymas iš AI

Iteratoriuose next metodas yra atsakingas už sekos kito elemento gavimą. Paprastai jis grąžina esamą elementą ir perkelia vidinį rodyklį į kitą. Jei daugiau elementų nėra, metodas turi signalizuoti iteracijos pabaigą (pavyzdžiui, išmetant išimtį StopIteration Python'e arba grąžinant specialią reikšmę).

Go kalboje iteratoriai nėra įgyvendinti taip aiškiai kaip Python'e, tačiau galima sukurti struktūrą su metodu Next() bool, kuris pereina prie kito elemento, ir Value() T, kuris grąžina esamą reikšmę.

Pavyzdys Go kalboje:

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())
    }
}

Čia, Next perkelia poziciją ir grąžina true, jei yra kitas elementas, o Value grąžina esamą elementą.