क्या एक पुनरावृत्ति एक पुनरावृत्तिकर्ता के समान है, या वे अलग हैं?
ऐसा लगता है, विनिर्देशों से , एक चलने योग्य एक वस्तु है, कहते हैं, 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)
इसलिए उपरोक्त कोड में, bar
iterable है, और 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
इस मामले में एक पुनरावृत्त और पुनरावृत्त दोनों है? " - हाँ। सभी देशी पुनरावृत्तियाँ भी स्वंय लौट कर पुन: प्रयोज्य हैं, ताकि आप आसानी से उन निर्माणों में पारित कर सकें जो एक पुनरावृत्ति की अपेक्षा रखते हैं।