Lập trình Dart - Generics

Phi tiêu là một optionally typed language. Các bộ sưu tập trong Dart không đồng nhất theo mặc định. Nói cách khác, một bộ sưu tập Dart duy nhất có thể lưu trữ các giá trị thuộc nhiều loại khác nhau. Tuy nhiên, một bộ sưu tập Dart có thể được thực hiện để giữ các giá trị đồng nhất. Khái niệm Generics có thể được sử dụng để đạt được điều tương tự.

Việc sử dụng Generics thực thi một giới hạn đối với kiểu dữ liệu của các giá trị mà bộ sưu tập có thể chứa. Các bộ sưu tập như vậy được gọi là bộ sưu tập kiểu an toàn. An toàn kiểu là một tính năng lập trình đảm bảo rằng một khối bộ nhớ chỉ có thể chứa dữ liệu của một kiểu dữ liệu cụ thể.

Tất cả các bộ sưu tập Dart đều hỗ trợ triển khai an toàn kiểu thông qua generic. Một cặp dấu ngoặc nhọn chứa kiểu dữ liệu được sử dụng để khai báo một tập hợp kiểu an toàn. Cú pháp để khai báo tập hợp kiểu an toàn như được đưa ra bên dưới.

Cú pháp

Collection_name <data_type> identifier= new Collection_name<data_type>

Các cách triển khai Danh sách, Bản đồ, Tập hợp và Hàng đợi an toàn kiểu được đưa ra bên dưới. Tính năng này cũng được hỗ trợ bởi tất cả các triển khai của các loại bộ sưu tập nêu trên.

Ví dụ: Danh sách chung

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

Nó sẽ tạo ra những thứ sau output -

WARNING 
ERROR 
INFO

Nỗ lực chèn một giá trị khác với kiểu đã chỉ định sẽ dẫn đến lỗi biên dịch. Ví dụ sau đây minh họa điều này.

Thí dụ

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

Nó sẽ tạo ra những thứ sau output -

1                                                                                     
ERROR                                                                             
INFO

Ví dụ: Tập hợp chung

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

Nó sẽ tạo ra những thứ sau output -

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

Ví dụ: Hàng đợi Chung

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

Nó sẽ tạo ra những thứ sau output -

Default implementation ListQueue<int> 
20 
30 
40

Bản đồ chung

Một khai báo bản đồ an toàn kiểu chỉ định các kiểu dữ liệu của -

  • Chìa khóa
  • Giá trị

Cú pháp

Map <Key_type, value_type>

Thí dụ

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

Nó sẽ tạo ra những thứ sau output -

Map :{name: Tom, Id: E1001}