مقدمه ای بر Iterators و Generators در JavaScript

از سال 2015 ، EcmaScript6 (ES6) پیشرفت های زیادی در شیوه های برنامه نویسی جاوا اسکریپت به ارمغان آورده است. مفاهیم مدرن متعددی به جاوا اسکریپت معرفی شدند و تجربه برنامه نویسی را تا حد زیادی بهبود بخشید. در این مقاله ، با تکرارکنندگان و ژنراتورها در جاوا اسکریپت آشنا خواهید شد.

تکرارکنندگان و ژنراتورها دو مفهوم متفاوت هستند ، اما از آنها به شیوه های مشابه استفاده می شود. آنها برای تکرار از طریق آرایه ها و اشیاء در JavaScript استفاده می شوند.

تکرارکنندگان

تکرارکننده ها مانند حلقه های پیشرفته ای هستند که می توان آنها را متوقف کرد. تكرار كنندگان شامل تابع () بعدی هستند كه مقدار و وضعیت انجام شده را برمی گرداند. فیلد مقدار ، مقدار آرایه در یک شاخص معین است. done مقدار بولی است که وضعیت تکمیل را برای تکرار از طریق حلقه باز می گرداند.

در اینجا مثالی وجود دارد که نحوه تکرار را نشان می دهد:

 function fruitIter(fruits){
let index = 0;
return {
next: function(){
return index < fruits.length ? { value: fruits[index++], done: false } : {done: true}
}
}
}
const fruitsArray = ["Mango", "Banana", "Grapes"];
const fruits = fruitIter(fruitsArray);
console.log(fruits.next().value);

خروجی :

 انبه

وقتی آرایه fruitArray را در متد () fruitIter ارسال می کنید ، یک تکرار کننده را که در متغیر میوه ها ذخیره شده است ، برمی گرداند. متغیر index در متد () fruitIter به 0 مقداردهی اولیه می شود. این متد تابع () بعدی را باز می گرداند که به حلقه آرایه کمک می کند. تابع next () بررسی می کند که آیا شاخص کمتر از fruitArray length است. اگر چنین است ، دو متغیر را برمی گرداند: نام میوه در آن شاخص و وضعیت انجام شده . ضمن بازگشت این مقادیر ، مقدار شاخص را نیز افزایش می دهد.

برای بررسی نحوه عملکرد این روش و چاپ نام میوه ، باید تابع next () را در تکرار میوه فراخوانی کرده و به مقدار آن دسترسی پیدا کنید.

مطالب مرتبط: عملکرد در برنامه نویسی چیست؟

ژنراتورها

ژنراتورها مشابه Iterators هستند اما مقادیر متعددی را برمی گردانند. به این مقادیر ، ارزش بازده گفته می شود. توابع ژنراتور با استفاده از نحو تابع* نوشته می شوند. * نشان می دهد که یک عملکرد معمولی نیست ، بلکه یک مولد است. در اینجا نمونه ای از ژنراتورها آمده است:

 function* printFruits(){
yield "Mango";
yield "Banana";
yield "Grapes";
}
const fruit = printFruits();
console.log(fruit.next());

خروجی :

 {value: 'Mango'، done: false}

در این مثال ، عملکرد تکرار کننده است. هنگامی که تابع printFruits () و print.next () را صدا می کنید ، یک شی به شما می دهد که در آن مقدار را دریافت می کنید. وضعیت انجام شده نشان می دهد که آیا همه مقادیر از طریق تکرار شده اند یا خیر.

ساختارهای داده را با استفاده از کلاس های ES6 در جاوا اسکریپت بیاموزید

جاوا اسکریپت ES6 پیشرفت های زیادی در شیوه های برنامه نویسی به همراه داشت. مهمترین آن ایجاد ساختار داده با استفاده از کلاسهای ES6 است. فشار دادن. پاپ ، و راه خود را به بالا و تبدیل شدن به یک حرفه ای جاوا اسکریپت!