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
| ]- "Global Objects/Generator". MDN. 30 noyabr 2024 tarixində arxivləşdirilib. İstifadə tarixi: 30 noyabr 2024.
Xarici keçidlər
| ]- Proqramlaşdırmada Generatorlar
wikipedia, oxu, kitab, kitabxana, axtar, tap, meqaleler, kitablar, oyrenmek, wiki, bilgi, tarix, tarixi, endir, indir, yukle, izlə, izle, mobil, telefon ucun, azeri, azəri, azerbaycanca, azərbaycanca, sayt, yüklə, pulsuz, pulsuz yüklə, haqqında, haqqinda, məlumat, melumat, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, şəkil, muisiqi, mahnı, kino, film, kitab, oyun, oyunlar, android, ios, apple, samsung, iphone, pc, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, web, computer, komputer
Vikipediya azad ensiklopediya Proqramlasdirmada generatorlar her bir icra zamani evvelki deyerini berpa ederek bu deyeri novbeti deyerin emalinda istifade ede bilen altproqramdir Generator funksiya adi funksiyalara benzeyir onun da parametrleri var adi funksiya kimi cagirilir ve melumatlari emal edir Ancaq generatorun icrasi fasilesiz deyil Yeni meselen her hansi bir siranin butun elementlerine tetbiq edilmeli olan emeliyyatlar adi funksiyadan ferqli olaraq novbe ile aparilacaq Bele olan teqdirde daha az yaddas teleb olunur ve emeliyyatlara nezaret daha rahat olur Isleme prinsipi span Ekser proqramlasdirma dilleri generator funksiyalari destekleyir Umumi olaraq her bir generator funksiya Iterator interfeysini implementasiya etmekle asagidaki abstraksiyalardan ibaretdir state Generator funksiyanin cari veziyyetini ehtiva edir next Generator funksiyanin novbeti iterasiyasinin neticesi Asagidaki numunede JavaScript proqramlasdirma dili ile yazilmis asagidaki primitiv generator funksiya numunesini gosterilir JS de generator funksiyalar suffiksi ile yaradilmalidir 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 Gorunduyu kimi counter adli funksiyanin daxilinde sonsuz dovrde davam eden inkrementasiya emeliyyati yerine yetirilir Analoji alqoritmi adi funksiyalar ile reallasdirmaq mumkun deyil Lakin generator funksiyalar icra kontekstini merheleli sekilde apardigi ucun iterasiya emeliyyati duzgun sekilde yerine yetirilecek Burada her bir icra neticesi yield vasitesile ekser proqramlasdirma dillerinde oldugu kimi geri qaytarilir Istinadlar span Global Objects Generator MDN 30 noyabr 2024 tarixinde arxivlesdirilib Istifade tarixi 30 noyabr 2024 Xarici kecidler span Proqramlasdirmada Generatorlar Kateqoriya Proqramlasdirma
