Cos'è il metodo next negli iteratori e come viene implementato?
sobes.tech AI
Risposta dell'AI
Ο μεθοδος next στους επεξεργαστές είναι υπεύθυνη για την απόκτηση του επόμενου στοιχείου της ακολουθίας. Συνήθως επιστρέφει το τρέχον στοιχείο και μετακινεί τον εσωτερικό δείκτη στο επόμενο. Αν δεν υπάρχουν άλλα στοιχεία, η μέθοδος πρέπει να σηματοδοτήσει το τέλος της επανάληψης (π.χ., ρίχνοντας μια εξαίρεση StopIteration στην Python ή επιστρέφοντας μια ειδική τιμή).
Στο Go, οι επεξεργαστές δεν υλοποιούνται τόσο ρητά όσο στην Python, αλλά μπορείτε να δημιουργήσετε μια δομή με μια μέθοδο Next() bool για να προχωρήσετε στο επόμενο στοιχείο και μια μέθοδο Value() T για να λάβετε την τρέχουσα τιμή.
Παράδειγμα σε 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())
}
}
Εδώ, το Next μετακινεί τη θέση και επιστρέφει true αν υπάρχει το επόμενο στοιχείο, και το Value επιστρέφει το τρέχον στοιχείο.