การเขียนโปรแกรม 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}