এটি জেনারেটরের কাজ।
জেনারেটরগুলি এমন ফাংশন যা বাইরে বের হওয়া এবং পরে পুনরায় প্রবেশ করা যেতে পারে। তাদের প্রসঙ্গ (ভেরিয়েবল বাইন্ডিংস) পুনরায় প্রবেশের মাধ্যমে সংরক্ষণ করা হবে।
জেনারেটর ফাংশন কল করা তার শরীরের তাত্ক্ষণিকভাবে কার্যকর করে না; পরিবর্তে ফাংশনটির জন্য একটি পুনরাবৃত্ত বস্তু ফিরে আসে। যখন পুনরুক্তির next()
পদ্ধতিটি বলা হয়, জেনারেটরের ফাংশনটির শরীরটি প্রথম yield
এক্সপ্রেশন পর্যন্ত সঞ্চালিত হয় , যা পুনরুক্তিকারীর কাছ থেকে ফিরে আসার মান নির্দিষ্ট করে বা yield*
অন্য জেনারেটরের ফাংশনে প্রতিনিধি প্রেরণ করে।
Noteতিহাসিক নোট:
এটি এর জন্য প্রস্তাবিত বাক্য গঠন EcmaScript.next
।
মজিলার ডেভ হারম্যান একমাস্ক্রিপ্ট.নেক্সট সম্পর্কে একটি বক্তব্য দিয়েছেন । এ 30:15 সে জেনারেটর কথা বলেছেন।
এর আগে, তিনি ব্যাখ্যা করেছেন যে মোজিলা কীভাবে কমিটি পরিচালনা করতে সাহায্য করার জন্য প্রস্তাবিত ভাষার পরিবর্তনের প্রয়োগ করছেন। ডেভ ব্রেন্ডান আইচ, মজিলার সিটিও (আমার মনে হয়) এবং মূল জাভাস্ক্রিপ্ট ডিজাইনারের সাথে ঘনিষ্ঠভাবে কাজ করে।
আপনি ECMAScript ওয়ার্কিং গ্রুপ উইকি সম্পর্কে আরো বিবরণ পেতে পারবেন: http://wiki.ecmascript.org/doku.php?id=harmony:generators
ওয়ার্কিং গ্রুপের (টিসি -৯৯) সাধারণ চুক্তি রয়েছে যে ইকামাস্ক্রিপ্ট.নেক্সটকে এক ধরণের জেনারেটর ইটারেটর প্রস্তাব রাখা উচিত, তবে এটি চূড়ান্ত নয়।
ভাষার পরবর্তী সংস্করণে কোনও পরিবর্তন ছাড়াই আপনার এই প্রদর্শন উপর নির্ভর করা উচিত নয় এবং এটি পরিবর্তন না হলেও এটি সম্ভবত কিছুক্ষণের জন্য অন্যান্য ব্রাউজারগুলিতে ব্যাপকভাবে প্রদর্শিত হবে না।
সংক্ষিপ্ত বিবরণ
প্রথম শ্রেণীর কর্টাইনগুলি, স্থগিতাদেশ কার্যকরকরণ প্রসঙ্গে (যেমন, ফাংশন অ্যাক্টিভেশন) এনক্যাপসুলেটিং অবজেক্ট হিসাবে উপস্থাপিত। পূর্ব শিল্প: পাইথন, আইকন, লুয়া, স্কিম, ছোট্টকল।
উদাহরণ
ফিবোনাচি সংখ্যাগুলির "অসীম" ক্রম (প্রায় 2 53 এর মতো আচরণের সাথে ):
function* fibonacci() {
let [prev, curr] = [0, 1];
for (;;) {
[prev, curr] = [curr, prev + curr];
yield curr;
}
}
জেনারেটরগুলি লুপগুলিতে পুনরাবৃত্তি করা যেতে পারে:
for (n of fibonacci()) {
// truncate the sequence at 1000
if (n > 1000)
break;
print(n);
}
জেনারেটর পুনরাবৃত্তি হয়:
let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8
function*
ফায়ারফক্সে সিনট্যাক্স v26 থেকে সমর্থিত: বিকাশকারী.মোজিলা.আর.ইন- ইউএস / ডকস / ওয়েব / জাভা স্ক্রিপ্ট / রেফারেন্স / * *। পুরানো সংস্করণগুলি একটি ভিন্ন বাক্য গঠন ব্যবহার করেছে।