Middle
Իտերատորներում next մեթոդը ինչ է և ինչպես է այն իրականացվում?
sobes.tech AI
Պատասխան AI-ից
Իտերատորների next մեթոդը պատասխանատու է հաջորդ տարրն ստանալու համար հաջորդականությունից։ Այն սովորաբար վերադարձնում է ընթացիկ տարրն ու տեղափոխում ներքին ցուցիչը հաջորդին։ Եթե այլ տարրեր չկան, մեթոդը պետք է նշի իտերացիայի ավարտը (օրինակ, Python-ում StopIteration արտակարգ իրավիճակ արձակելով կամ հատուկ արժեք վերադարձնելով):
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 վերադարձնում է ընթացիկ տարրն։