Sobes.tech
Middle

Czym jest metoda next w iteratorach i jak jest zaimplementowana?

sobes.tech AI

Odpowiedź od AI

Metoda next w iteratorach odpowiada za pobranie następnego elementu sekwencji. Zazwyczaj zwraca bieżący element i przesuwa wskaźnik wewnętrzny na następny. Jeśli nie ma więcej elementów, metoda powinna sygnalizować koniec iteracji (np. rzucając wyjątek StopIteration w Pythonie lub zwracając specjalną wartość).

W Go iteratory nie są implementowane tak jawnie jak w Pythonie, ale można utworzyć strukturę z metodą Next() bool do przejścia do następnego elementu i metodą Value() T do pobrania bieżącej wartości.

Przykład w 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())
    }
}

Tutaj, Next przesuwa pozycję i zwraca true, jeśli jest kolejny element, a Value zwraca bieżący element.