Generator (proqramlaşdırma)

Proqramlaşdırmada generatorlar — hər bir icra zamanı əvvəlki dəyərini bərpa edərək, bu dəyəri növbəti dəyərin emalında istifadə edə bilən altproqramdır.

Generator funksiya adi funksiyalara bənzəyir; onun da parametrləri var, adi funksiya kimi çağırılır və məlumatları emal edir. Ancaq generatorun icrası fasiləsiz deyil. Yəni, məsələn hər hansı bir sıranın bütün elementlərinə tətbiq edilməli olan əməliyyatlar, adi funksiyadan fərqli olaraq növbə ilə aparılacaq. Belə olan təqdirdə, daha az yaddaş tələb olunur və əməliyyatlara nəzarət daha rahat olur.

 İşləmə prinsipi 
Əksər proqramlaşdırma dilləri generator-funksiyaları dəstəkləyir. Ümumi olaraq, hər bir generator-funksiya Iterator interfeysini implementasiya etməklə, aşağıdakı abstraksiyalardan ibarətdir:

state   // Generator funksiyanın cari vəziyyətini ehtiva edir
next  // Generator funksiyanın növbəti iterasiyasının nəticəsi

Aşağıdakı nümunədə JavaScript proqramlaşdırma dili ilə yazılmış aşağıdakı primitiv generator-funksiya nümunəsini göstərilir:

// JS-də generator-funksiyalar * suffiksi ilə yaradılmalıdır
function* counter(startPoint) {
    while(true) yield startPoint++;
}
const count = counter(1);
console.log(count.next().value); // 1
console.log(count.next().value); // 2
console.log(count.next().value); // 3

Göründüyü kimi, counter adlı funksiyanın daxilində sonsuz dövrdə davam edən inkrementasiya əməliyyatı yerinə yetirilir. Analoji alqoritmi adi funksiyalar ilə reallaşdırmaq mümkün deyil. Lakin, generator-funksiyalar icra-kontekstini mərhələli şəkildə apardığı üçün iterasiya əməliyyatı düzgün şəkildə yerinə yetiriləcək. Burada, hər bir icra nəticəsi yield vasitəsilə (əksər proqramlaşdırma dillərində olduğu kimi) geri qaytarılır.

 İstinadlar 

 Xarici keçidlər 
 Proqramlaşdırmada Generatorlar

Kateqoriya:Proqramlaşdırma