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.