لیست ها در دارت
لیست ها قابلیت ذخیره سازی دسته ای از اطلاعات را در خود دارند . تفاوت لیست ها با آرایه ها در این است که آرایه یک نوع داده ای است ، در حالی که لیست در واقع یک کلاس هست و به همین دلیل توابع زیادی در خود برای کمک به کاربر دارد .
در لحظه تعریف یک شی از نوع لیست شما می توانید با استفاده از سازنده های مختلفی که در کلاس لیست پیش بینی شده است ، اقدام به تعریف شی جدید خود کنید . به عنوان مثال به قطعه کد زیر دقت نمایید :
void main() { List name = ['Ali','Reza','Nader']; print(name.length); // نمایش تعداد اعضاء لیست print(name); // نمایش اعضاء لیست print(name.first); // نمایش اولین عضو لیست print(name.last); // نمایش آخرین عضو لیست print(name.reversed); // معکوس کردن اعضاء لیست }
همین طور که قابل مشاهده است یک شی با نام name از نوع لیست ایجاد کرده ایم و در همان خط با استفاده از سازنده پیش فرض کلاس لیست ، مقداردهی کرده ایم . در خط های بعدی کد نیز از برخی قابلیت های موجود در کلاس لیست استفاده کردیم . خروجی کد فوق در تصویر زیر قابل مشاهده است :
برخی از توابع پر کاربرد لیست ها
در قطعه کد زیر نیز تعدادی از توابع پر کاربرد لیست به نمایش گذاشته شده است :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; print(num); num.remove(10); // حذف عضوی که مقدار ۱۰ دارد print(num); num.sort(); // مرتب سازی اعضاء لیست print(num); num.shuffle(); // مرتب سازی تصادفی لیست print(num); num.add(10); // افزودن عضو جدید print(num); num.addAll([11,12]); // افزودن آرایه ای از اعضاء print(num); }
خروجی کد فوق در تصویر زیر قابل مشاهده است :
پیمایش تک تک اعضاء لیست
یکی از کاربردی ترین امکانات لیست ها قابلیت استفاده از forEach جهت پیمایش اعضاء لیست است . برای این منظور مطابق مثال زیر عمل نمایید :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; num.forEach((item){ print(item); }); }
خروجی کد فوق در تصویر زیر قابل مشاهده است :
این قابلیت به شما این امکان را می دهد که متناسب با اعضاء لیست فعالیت خاصی را سازماندهی نمایید .
پیمایش آیتم های لیست و تغییر آنها
یکی دیگر از توابع کاربردی لیست ها map می باشد . map نیز همانند forEach آیتم های لیست را پیمایش میکند با این تفاوت که تغییرات را بر روی همان آیتم بازنویسی می کند و در نهایت به صورت یکجا و در قالب یک لیست بازگشت می دهد . مپ برای مواردی که مایل هستید به تمام آیتم های لیست مقداری را اضافه و یا از آنها مقداری را کسر نمایید و مجدد لیست تغییر یافته را دریافت نمایید کاربرد دارد . به عنوان مثال به قطعه کد زیر توجه نمایید :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; var name = num.map((item){ return 'Number is $item'; }).toList(); print(name); }
خروجی کد فوق در تصویر زیر قابل مشاهده است :
همان طور که در تصویر بالا نیز دیده می شود ، map مقدار بازگشتی دارد لذا بعد از map می توانید از toList استفاده نمایید ، این در حالی است که forEach از نوع void است و هیچ مقداری را بازگشت نمی دهد و هر کاری که شما تعیین کرده باشید در بدنه خود به انجام می رساند ، اگر مایلید تغییرات داخل forEach را در بیرون از آن داشته باشید ، لازم است قبل از forEach یک متغییر تعریف کرده و در داخل forEach مورد استفاده قرار دهید .
جمع مقادیر یک لیست عددی
در صورتی که لیست حاوی مقادیر عددی دارید و مایلید با کمترین کد به جمع آن دسترسی داشته باشید می توانید مطابق مثال زیر عمل نمایید :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; var sum = num.reduce((value, nextitem)=> value + nextitem); print(sum); }
خروجی کد فوق در تصویر زیر دیده می شود :
در واقع تابع reduse مقدار آیتم جاری و آیتم بعدی را در دسترس قرار می دهد ، که من با استفاده از این قابلیت این دو مقدار را با هم جمع و return کرده ام . توجه داشته باشید که این تابع در نهایت یک مقدار عددی بازگشت می دهد .
فیلتر آیتم های لیست
در صورتی که مایلید تعدادی از آیتم های لیست را فیلتر و مابقی را نمایش دهید می توانید از توابع take و skip مطابق مثال زیر استفاده نمایید :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; print(num); print(num.take(3).toList()); // نمایش سه آیتم ابتدایی لیست print(num.skip(3).take(3).toList()); // سه آیتم پرش کن و سپس سه آیتم را نمایش بده }
خروجی کد فوق در تصویر زیر دیده می شود :
اجرا یک شرط روی آیتم های لیست
در صورتی که مایلید آیتم های لیست را بر اساس یک شرط فیلتر نمایید به عنوان مثال آیتم های زوج را از فرد جدا نمایید یا … می توانید از تابع where به شکلی که در مثال زیر دیده می شود استفاده نمایید :
void main() { List num = [3,1,8,2,6,4,7,9,0,5,10]; print(num); num = num.where((item) => item % 2 == 0).toList(); print(num); }
خروجی کد فوق در تصویر زیر دیده می شود :
جهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی دارت مراجعه نمایید .
امیدوارم این مطلب برای شما مفید باشد .