Sobes.tech
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 վերադարձնում է ընթացիկ տարրն։