لیست ها در دارت

تعداد بازدید ها : 2,248 بازدید
 لیست ها در دارت

زبان برنامه نویسی دارت

لیست ها قابلیت ذخیره سازی دسته ای از اطلاعات را در خود دارند . تفاوت لیست ها با آرایه ها در این است که آرایه یک نوع داده ای است ، در حالی که لیست در واقع یک کلاس هست و به همین دلیل توابع زیادی در خود برای کمک به کاربر دارد .

در لحظه تعریف یک شی از نوع لیست شما می توانید با استفاده از سازنده های مختلفی که در کلاس لیست پیش بینی شده است ، اقدام به تعریف شی جدید خود کنید . به عنوان مثال به قطعه کد زیر دقت نمایید :

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);
}

خروجی کد فوق در تصویر زیر قابل مشاهده است :

می خوانم   تفاوت const , final در تعریف ثابت ها

لیست در دارتپیمایش تک تک اعضاء لیست

یکی از کاربردی ترین امکانات لیست ها قابلیت استفاده از 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 مورد استفاده قرار دهید .

می خوانم   ویجت BottomNavigationBar

جمع مقادیر یک لیست عددی

در صورتی که لیست حاوی مقادیر عددی دارید و مایلید با کمترین کد به جمع آن دسترسی داشته باشید می توانید مطابق مثال زیر عمل نمایید :

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);
}

خروجی کد فوق در تصویر زیر دیده می شود :

لیست در دارتجهت کسب اطلاعات بیشتر از این آدرس به سایت اصلی دارت مراجعه نمایید .

می خوانم   لیست ها و Generics در دارت

امیدوارم این مطلب برای شما مفید باشد .

4+
محمدمجتبی جوارشکیان

محمدمجتبی جوارشکیان

من محمدمجتبی جوارشکیان ، کارشناس IT و فعال اجتماعی هستم و در حوزه معماری ، طراحی ، تحلیل گری ، مدلسازی و توسعه ی محیط های نرم افزاری فعالیت دارم . بسیار خوشحال می شوم من را از انتقادات ، پیشنهادات و نظرات خود مطلع فرمایید . آدرس ایمیل : info@javareshkian.ir

ارسال یک پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

پانزده − 10 =