Iterator protokolü
next() metodu ve done/value yapısını öğrenirsin.
Iterator protokolü
Bir iterator, içinde next() metodu olan bir nesnedir. next() çağrıldığında JavaScript bir sonuç nesnesi döndürür: { value, done }. value o anki değeri, done ise tükenme durumunu taşır.
Bu düzene iterator protokolü denir. Her çağrı bir sonraki değeri üretir; dizi bitince done: true döner. Böylece JavaScript hangi veri yapısıyla karşılaştığını bilmek zorunda kalmadan her şeyi aynı biçimde gezebilir.
done ve value
done false iken value anlamlıdır: o anki öğeyi taşır. done true olduğunda iterator tükenmiş demektir; value genelde undefined olur ve önemsenmez.
Bu yüzden döngüler önce done değerine bakar. true gelince döngüden çıkar. Elle iterator gezdiğinde sen de aynı denetimi yapmalısın; yoksa tükenmiş iterator sürekli { value: undefined, done: true } döndürür.
Uygulama Sayaç iterator'ü yaz
counter adında bir nesne oluştur. count özelliği 0'dan başlasın. next() metodu her çağrıda count'u 1 artırsın ve { value, done } döndürsün. İlk üç çağrıda done: false, dördüncüde done: true dönsün. Sonra console.log ile üç değeri ve dördüncü çağrının done bilgisini yazdır.
Örnek çözümü göster
const counter = {
count: 0,
next() {
this.count += 1;
if (this.count <= 3) {
return { value: this.count, done: false };
}
return { value: undefined, done: true };
}
};
console.log(counter.next().value);
console.log(counter.next().value);
console.log(counter.next().value);
console.log(counter.next().done);
Kendini test et
-
Bir iterator'ın next() metodu ne döndürür?
- Bir sayı
- Bir dizi
- { value, done } nesnesi
- Bir fonksiyon
Cevabı göster
{ value, done } nesnesi — Doğru. next() bir sonuç nesnesi döndürür.
-
next() sonuç nesnesini tamamla
const iter = { count: 0, next() { this.count += 1; return { value: this.count, ____ }; } }; console.log(iter.next().done);Cevabı göster
const iter = { count: 0, next() { this.count += 1; return { value: this.count, done: false }; } }; console.log(iter.next().done); -
Iterator protokolü kavramları
- next()
- Sonraki değeri döndürür
- value
- Şu anki değeri taşır
- done
- Bitiş bilgisini verir
- iterator
- next() metodu olan nesne