क्या एक पुनरावृत्ति एक पुनरावृत्तिकर्ता के समान है, या वे अलग हैं?
ऐसा लगता है, विनिर्देशों से , एक चलने योग्य एक वस्तु है, कहते हैं, objजैसे कि obj[Symbol.iterator]एक फ़ंक्शन को संदर्भित करता है, ताकि जब आह्वान किया जाए, तो एक ऐसी वस्तु लौटाता है जिसमें एक nextविधि होती है जो किसी {value: ___, done: ___}वस्तु को वापस कर सकती है :
function foo() {
let i = 0;
const wah = {
next: function() {
if (i <= 2) return { value: (1 + 2 * i++), done: false }
else return { value: undefined, done: true }
}
};
return wah; // wah is iterator
}
let bar = {} // bar is iterable
bar[Symbol.iterator] = foo;
console.log([...bar]); // [1, 3, 5]
for (a of bar) console.log(a); // 1 3 5 (in three lines)
इसलिए उपरोक्त कोड में, bariterable है, और wahइटरेटर है, और next()इटरेटर इंटरफेस है।
तो, पुनरावृत्त और पुनरावृत्त अलग-अलग चीजें हैं।
अब, हालांकि, जनरेटर और पुनरावृत्त के एक आम उदाहरण में:
function* gen1() {
yield 1;
yield 3;
yield 5;
}
const iter1 = gen1();
console.log([...iter1]); // [1, 3, 5]
for (a of iter1) console.log(a); // nothing
const iter2 = gen1();
for (a of iter2) console.log(a); // 1 3 5 (in three lines)
console.log(iter1[Symbol.iterator]() === iter1); // true
उपरोक्त मामले में, gen1जनरेटर है, और iter1पुनरावृत्त है, और iter1.next()उचित काम करेगा। लेकिन iter1[Symbol.iterator]एक फ़ंक्शन देता है iter1, जो कि जब आह्वान किया जाता है, वापस देता है , जो एक पुनरावृत्ति है। तो iter1क्या इस मामले में एक पुनरावृत्त और पुनरावृत्त दोनों है?
इसके अलावा, iter1उदाहरण 1 के ऊपर से अलग है, क्योंकि उदाहरण 1 में चलने योग्य, [1, 3, 5]जितनी बार चाहें उपयोग कर सकते हैं [...bar], जबकि iter1एक चलने योग्य है, लेकिन चूंकि यह खुद को वापस लौटाता है, जो हर बार एक ही पुनरावृत्ति करता है, केवल [1, 3, 5]एक बार देगा।
तो हम कह सकते हैं, एक पुनरावृत्ति के लिए bar, कितनी बार [...bar]परिणाम दे सकते हैं [1, 3, 5]- और जवाब है, यह निर्भर करता है। और क्या पुनरावृति एक पुनरावृत्ति के समान है? और जवाब है, वे अलग-अलग चीजें हैं, लेकिन वे एक ही हो सकते हैं, जब चलने वाला खुद को पुनरावृत्त के रूप में उपयोग करता है। क्या वो सही है?
iter1इस मामले में एक पुनरावृत्त और पुनरावृत्त दोनों है? " - हाँ। सभी देशी पुनरावृत्तियाँ भी स्वंय लौट कर पुन: प्रयोज्य हैं, ताकि आप आसानी से उन निर्माणों में पारित कर सकें जो एक पुनरावृत्ति की अपेक्षा रखते हैं।