การเขียนโปรแกรม Dart - Generics

โผคือ optionally typed language. คอลเล็กชันใน Dart จะไม่เหมือนกันโดยค่าเริ่มต้น กล่าวอีกนัยหนึ่งคอลเลกชัน Dart เดียวสามารถโฮสต์ค่าประเภทต่างๆได้ อย่างไรก็ตามคอลเลกชัน Dart สามารถสร้างขึ้นเพื่อเก็บค่าที่เป็นเนื้อเดียวกันได้ แนวคิดของ Generics สามารถใช้เพื่อให้บรรลุสิ่งเดียวกัน

การใช้ Generics บังคับใช้ข้อ จำกัด เกี่ยวกับชนิดข้อมูลของค่าที่คอลเล็กชันสามารถมีได้ คอลเลกชันดังกล่าวเรียกว่าคอลเลกชันประเภทปลอดภัย ความปลอดภัยของประเภทเป็นคุณสมบัติการเขียนโปรแกรมที่ช่วยให้มั่นใจได้ว่าบล็อกหน่วยความจำสามารถมีเฉพาะข้อมูลประเภทข้อมูลที่ระบุ

คอลเลกชัน Dart ทั้งหมดรองรับการใช้งานประเภทความปลอดภัยผ่านทางทั่วไป คู่ของวงเล็บเหลี่ยมที่มีชนิดข้อมูลถูกใช้เพื่อประกาศการรวบรวมแบบปลอดภัย ไวยากรณ์สำหรับการประกาศคอลเลกชันประเภทปลอดภัยมีดังต่อไปนี้

ไวยากรณ์

Collection_name <data_type> identifier= new Collection_name<data_type>

การใช้งานแบบปลอดภัยของรายการแผนที่ชุดและคิวได้รับด้านล่าง คุณสมบัตินี้ได้รับการสนับสนุนโดยการใช้งานประเภทคอลเลกชันที่กล่าวถึงข้างต้นทั้งหมด

ตัวอย่าง: รายการทั่วไป

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

ควรผลิตสิ่งต่อไปนี้ output -

WARNING 
ERROR 
INFO

ความพยายามที่จะแทรกค่าอื่นนอกเหนือจากชนิดที่ระบุจะทำให้เกิดข้อผิดพลาดในการคอมไพล์ ตัวอย่างต่อไปนี้แสดงให้เห็นถึงสิ่งนี้

ตัวอย่าง

void main() { 
   List <String> logTypes = new List <String>(); 
   logTypes.add(1); 
   logTypes.add("ERROR"); 
   logTypes.add("INFO"); 
  
   //iterating across list 
   for (String type in logTypes) { 
      print(type); 
   } 
}

ควรผลิตสิ่งต่อไปนี้ output -

1                                                                                     
ERROR                                                                             
INFO

ตัวอย่าง: ชุดทั่วไป

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

ควรผลิตสิ่งต่อไปนี้ output -

Default implementation :_CompactLinkedHashSet<int> 
100 
20 
5 
60 
70

ตัวอย่าง: Generic Queue

import 'dart:collection'; 
void main() { 
   Queue<int> queue = new Queue<int>(); 
   print("Default implementation ${queue.runtimeType}");  
   queue.addLast(10); 
   queue.addLast(20); 
   queue.addLast(30); 
   queue.addLast(40); 
   queue.removeFirst();  
   
   for(int no in queue){ 
      print(no); 
   } 
}

ควรผลิตสิ่งต่อไปนี้ output -

Default implementation ListQueue<int> 
20 
30 
40

แผนที่ทั่วไป

การประกาศแผนที่ปลอดภัยระบุประเภทข้อมูลของ -

  • ที่สำคัญ
  • มูลค่า

ไวยากรณ์

Map <Key_type, value_type>

ตัวอย่าง

void main() { 
   Map <String,String>m={'name':'Tom','Id':'E1001'}; 
   print('Map :${m}'); 
}

ควรผลิตสิ่งต่อไปนี้ output -

Map :{name: Tom, Id: E1001}