প্রশ্নগুলি হ'ল:
- জেনারেটর কি কার্যকরী প্রোগ্রামিং দৃষ্টান্তটি ভেঙে দেয়? কেন অথবা কেন নয়?
- যদি হ্যাঁ, জেনারেটরগুলি কার্যকরী প্রোগ্রামিংয়ে ব্যবহৃত হতে পারে এবং কীভাবে?
নিম্নোক্ত বিবেচনা কর:
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
পদ্ধতি আড়ম্বরহীন প্রদর্শিত হবে। পাশাপাশি, downCounter
একই ইনপুট দিয়ে কল করা , সর্বদা একই আউটপুট তৈরি করে। তবে একই সময়ে, কলিং next()
সুসংগত ফলাফল দেয় না produce
আমি নিশ্চিত না যে জেনারেটরগুলি কার্যকরী প্রোগ্রামিং দৃষ্টান্তটি ভেঙে দেয় বা না কারণ এই উদাহরণে counter
একটি জেনারেটর অবজেক্ট এবং তাই কলিং next()
একই ফলাফল দিয়ে অন্য জেনারেটর অবজেক্ট হিসাবে তৈরি করবে maxValue
।
পাশাপাশি, someCollection[3]
একটি অ্যারেতে কল করা সর্বদা চতুর্থ উপাদানটি ফিরিয়ে দেয়। একইভাবে, next()
একটি জেনারেটর অবজেক্টে চারবার কল করাও সর্বদা চতুর্থ উপাদানটি ফিরিয়ে দেয়।
আরও প্রসঙ্গে, একটি প্রোগ্রামিং কাটার কাজ করার সময় এই প্রশ্নগুলি উত্থাপিত হয়েছিল । যে ব্যক্তি এই প্রশ্নের উত্তর দিয়েছিল, জেনারেটরগুলি কার্যকরী প্রোগ্রামিংয়ে ব্যবহৃত হতে পারে এবং না এবং তারা রাষ্ট্রটি ধরে রাখে কি না সে প্রশ্ন উত্থাপন করেছিল।