لیست ها و Generics در دارت
در دارت هم همانند تمام زبان های سطح بالا ، جهت نظارت بر صحت اطلاعات وارد شده به لیست ها ، آرایه ها و مپ ها از جنریک استفاده می شود . جنریک به معنی وابسته کردن می باشد و در عمل جنریک کردن در واقع ما به متغییری که از نوع لیست تعریف شده است می گوییم که مجاز است به عنوان ورودی چه نوع دیتایی را دریافت نماید . این موضوع در هنگام استفاده از نرم افزار ، با تولید خطای مناسب ، جلو اشتباهات کاربری را می گیرید . به مثال زیر توجه نمایید :
void main() { var name = new List(); name.add('Ali'); name.add('Hesam'); name.add(1234); name.add(true); print(name); }
همان طور که در خط ۲ مشاهده می نمایید متغییر name از نوع لیست تعریف شده است و چون از قابلیت جنریک استفاده نشده است ، کامپایلر دارت به صورت پیش فرض برای متغییر ما نوع dynamic را در نظر گرفته است که در این حالت هر نوع داده ای قابلیت ثبت را دارد و خطایی تولید نمی شود .
شما می توانید به روش زیر متغییر name را به نوع داده String جنریک کرده تا از ورود اطلاعات از نوع int و bool جلوگیری نمایید :
void main() { var name = new List<String>(); name.add('Ali'); name.add('Hesam'); name.add(1234); name.add(true); print(name); }
در این حالت کاربر در خط های شماره ۶ و ۷ و در هنگام ثبت اطلاعات از نوع int و bool ، خطا دریافت نموده و از ثبت اطلاعات اشتباه جلوگیری می گردد . خروجی را در تصویر زیر مشاهده نمایید :
در مپ ها نیز همین موضوع مصداق دارد . اگر ما در هنگام تعریف متغییر از نوع مپ ، نوع مقادیر key و value را مشخص نکنیم ، این مقادیر به صورت dynamic در نظر گرفته می شود و کاربر مجاز خواهد بود هر مقداری را در این متغییر ثبت نماید . به عنوان مثال به قطعه کد زیر توجه نمایید :
void main() { var name = { ۱ : 'Ali', ۲ : 'Reza', '۳' : ۱۲۳۴۵ }; print(name); }
همان طور که در خط ۵ مشاهده می نماید ، کاربر نوع کلید را String و نوع دیتا را int ثبت نموده است و کامپایلر هم خطایی تولید نکرده است . قطعه کد بالا را به این روش می توان جنریک کرد :
void main() { var name = <int , String>{ ۱ : 'Ali', ۲ : 'Reza', '۳' : ۱۲۳۴۵ }; print(name); }
در این حالت کاربر در خط ۵ خطا دریافت کرده و به این وسیله از ثبت اشتباه اطلاعات جلوگیری می شود .
امیدوارم مطالعه این مطلب برای شما مفید باشد . به عنوان منبع می توانید از سایت اصلی دارت به این آدرس نیز استفاده نمایید .