Sorular:
- Jeneratörler fonksiyonel programlama paradigmasını kırıyor mu? Neden ya da neden olmasın?
- Evetse, jeneratörler fonksiyonel programlamada kullanılabilir ve nasıl?
Aşağıdakileri göz önünde bulundur:
function * downCounter(maxValue) {
yield maxValue;
yield * downCounter(maxValue > 0 ? maxValue - 1 : 0);
}
let counter = downCounter(26);
counter.next().value; // 26
counter.next().value; // 25
// ...etc
downCounter
Yöntem durum bilgisi görüntülenir. Ayrıca downCounter
, aynı girişle çağrı yapmak her zaman aynı çıkışla sonuçlanacaktır. Ancak, aynı zamanda arama next()
tutarlı sonuçlar üretmez.
Bu örnekte counter
bir jeneratör nesnesi olduğu için jeneratörlerin fonksiyonel programlama paradigmasını bozup kırmadığından emin değilim ve bu nedenle çağrı next()
, tam olarak aynı olan başka bir jeneratör nesnesiyle aynı sonuçları üretecektir maxValue
.
Ayrıca someCollection[3]
, bir diziyi çağırmak her zaman dördüncü öğeyi döndürür. Benzer şekilde, next()
bir jeneratör nesnesine dört kez çağrı yapmak da daima dördüncü elemanı döndürür.
Daha fazla bağlam için, bu sorular bir programlama kata üzerinde çalışırken ortaya atıldı . Soruyu cevaplayan kişi, jeneratörlerin fonksiyonel programlamada kullanılıp kullanılamayacağı ve durumu olup olmadıkları sorusunu gündeme getirdi.