Generator fonksiyonlar
function* ile generator tanımlamayı ve generator nesnesini öğrenirsin.
Generator fonksiyonlar
Bir generator, çağrıldığında tüm değerleri üretmek yerine çağıran tarafından adım adım tüketilen özel bir işlevdir. function* sözdizimi ile tanımlanır; yıldız işareti bu işlevin normal bir işlev değil, bir generator olduğunu belirtir.
function* counter() {
yield 1;
}
const gen = counter();Generator çağrıldığında kod hemen çalışmaz. Bunun yerine, yürütme durumunu saklayan bir generator nesnesi döner. Bu nesne, üretilecek değerleri tek tek istemek için kullanılır.
function* ve normal fonksiyon farkı
Normal bir işlev çağrıldığında gövdesi hemen çalışır ve bir değer döner. Bir generator ise çağrıldığında gövdesini çalıştırmaz; bunun yerine bir generator nesnesi döndürür. Kod, ancak .next() çağrıldığında adım adım yürütülür.
function* greeter() {
yield 'merhaba';
}
const g = greeter();
g.next(); // { value: 'merhaba', done: false }Bu tembel davranış, büyük veya sonsuz dizilerde bellek tasarrufu sağlar.
Uygulama İlk generatorunu yaz
counter adında bir generator fonksiyonu yaz. İçine bir yield 1 ifadesi ekle. gen adında bir generator nesnesi oluştur. console.log(gen.next()) çağrısı ile sonucu yazdır.
Örnek çözümü göster
function* counter() {
yield 1;
}
const gen = counter();
console.log(gen.next());
Kendini test et
-
Hangisi geçerli bir generator fonksiyon tanımıdır?
- function counter*() {}
- function generator counter() {}
- function* counter() {}
- generator function counter() {}
Cevabı göster
function* counter() {} — Doğru! function* sözdizimi generator tanımlamanın standart yoludur.
-
Generator nesnesini oluştur
function* counter() { yield 1; } const gen = ____;Cevabı göster
function* counter() { yield 1; } const gen = counter(); -
Generator kavramlarını eşleştir
- function*
- generator tanımlar
- generator nesnesi
- next() döndürür
- lazy
- çağrılınca çalışır