با عرض سلام خدمت کاربران محترم سایت پی وی لرن.
با جلسه ای دیگر از سری جلسات دوره آموزش زبان برنامه نویسی دارت Dart در خدمت شما هستیم.
در این جلسه قصد داریم به آموزش Generic ها در زبان دارت Dart بپردازیم.
Collection ها در زبان دارت به صورت ناهمگون هستند. یعنی عناصر آن میتوانند از انواع مختلف داده باشند.
اما collection ها میتوانند طوری ساخته شوند که همگون بوده و فقط داده هایی از یک نوع را ذخیره کنند.
از مفهموم و ویژگی Generic برای این منظور استفاده میکنیم.
استفاده از Generic باعث ایجاد محدودیت در نوع داده ای که عناصر کالکشن میتوانند داشته باشند، میشود.
این نوع کالکشن ها، کالکشن های type-safe نیز نامیده میشوند.
ایمنی نوع تضمین میکند که یک بلوک داده فقط میتواند حاوی مقادیری از یک نوع داده خاص باشد.
تمامی کالکشن ها با پیاده سازی Generic ها، از ایمنی نوع (type-safety) پشتیبانی میکنند.
از <> که حاوی یک نوع داده است، برای پیاده سازی کالکشن های generic استفاده میشود.
گرامر:
1 | Collection_name <data_type> identifier= new Collection_name<data_type> |
در مثال زیر یک لیست generic ایجاد کرده ایم.
1 2 3 4 5 6 7 8 9 10 11 | void main() { List <String> logTypes = new List <String>(); logTypes.add("WARNING"); logTypes.add("ERROR"); logTypes.add("INFO"); // iterating across list for (String type in logTypes) { print(type); } } |
خروجی:
1 2 3 | WARNING ERROR INFO |
در مثال زیر نیز یک Set را به صورت generic ایجاد کرده ایم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | void main() { Set <int>numberSet = new Set<int>(); numberSet.add(100); numberSet.add(20); numberSet.add(5); numberSet.add(60); numberSet.add(70); // numberSet.add("Tom"); compilation error; print("Default implementation :${numberSet.runtimeType}"); for(var no in numberSet) { print(no); } } |
خروجی:
1 2 3 4 5 6 | Default implementation :_CompactLinkedHashSet<int> 100 20 5 60 70 |
از آن جایی که map داده ها را به صورت جفت کلید-مقدار ذخیره میکند، بنابراین باید هم برای کلیئ و هم برای مقدار، نوع داده تعریف کنیم.
گرامر:
1 | Map <Key_type, value_type> |
مثال:
1 2 3 4 | void main() { Map <String,String>m={'name':'Tom','Id':'E1001'}; print('Map :${m}'); } |
خروجی:
1 | Map :{name: Tom, Id: E1001} |
جلسه آموزش Generic ها در زبان دارت Dart نیز به پایان رسید.
در جلسه بعد به آموزش رابط ها (Interfaces) در زبان دارت خواهیم پرداخت.