আমারও একই প্রশ্ন ছিল এবং এখানে এসেছি। পোস্টগুলি এবং মন্তব্যগুলি পড়ার পরে, আমি অনুভব করেছি যে একটি তীর ফাংশনে জেনারেটরটি ব্যবহার করা অস্পষ্ট বলে মনে হচ্ছে:
const generator = () => 2*3; // * implies multiplication
// so, this would be a confusing
const generator = () =>* something; // err, multiplying?
const generator = () =*> ... // err, ^^
const generator = ()*=> ... // err, *=3, still multiplying?
const generator=*()=> ... // err, ^^
const generator = *param => ... //err, "param" is not fixed word
তীর ফাংশন সম্পর্কিত তারা জেনারেটর বাস্তবায়ন না করায় এটিই বড় কারণ হতে পারে।
তবে, আমি যদি তাদের মধ্যে একজন হতাম তবে আমি এইরকম চিন্তা করতে পারতাম:
const generator = gen param => ... // hmm, gen indicates a generator
const generator = gen () => ... // ^^
এটি আমাদের অ্যাসিক্রোনাস ফাংশনটির মতো অনুভব করে:
const asyncFunction = async () => ... // pretty cool
কারণ, সাধারণ ফাংশন সহ অ্যাসিঙ্ক কীওয়ার্ড বিদ্যমান, সুতরাং তীর ফাংশন এটি ব্যবহার করছে - async () =>
সম্ভবত মনে হয় async function()
।
তবে, gen
বা এর মতো কোনও কীওয়ার্ড নেই generator
এবং হায় হায় তীর ফাংশন এটি ব্যবহার করছে না।
শেষ করা:
এমনকি তারা তীর ফাংশনে জেনারেটর বাস্তবায়ন করতে চাইলেও, আমি মনে করি তাদের মূল জেএসে জেনারেটর সিনট্যাক্স সম্পর্কে পুনরায় চিন্তা করা দরকার:
generator function myfunc() {}
// rather than
function* myfunc() {} // or, function *myfunc() {}
এবং এটি একটি বড় ভুল হতে পারে। সুতরাং, জেনারেটর থেকে তীর ফাংশন রাখা, বেশ দুর্দান্ত।
বার্গির মন্তব্য অনুসরণ করছেন :
না। অ্যারো ফাংশনগুলি হালকা ওজন হিসাবে বিবেচিত হয় (এবং উদাহরণস্বরূপ একটি প্রোটোটাইপ নেই) এবং প্রায়শই ওয়ান-লাইনার থাকে, যখন জেনারেটরগুলি বেশ বিপরীত হয়।
আমি বলব যে জেনারেটরের ব্যবহারের উদ্দেশ্যটি রান-স্টপ-রান এবং তাই আমি মনে করি না যে আমাদের প্রোটোটাইপ, লেক্সিকাল ইত্যাদি ইত্যাদি সম্পর্কে যত্ন নেওয়া দরকার don't
function*
স্টেটমেন্ট (ফাংশন কীওয়ার্ড এর পরে একটি নক্ষত্রমুখে) একটি জেনারেটর ফাংশন সংজ্ঞায়িত করে।"