Pemrograman Dart - Generik

Dart adalah optionally typed language. Koleksi di Dart heterogen secara default. Dengan kata lain, satu koleksi Dart dapat menampung nilai dari berbagai jenis. Namun, koleksi Dart dapat dibuat agar memiliki nilai yang homogen. Konsep Generik dapat digunakan untuk mencapai hal yang sama.

Penggunaan Generik memberlakukan batasan pada tipe data dari nilai yang dapat dimuat oleh koleksi. Koleksi semacam itu disebut sebagai koleksi aman jenis. Keamanan tipe adalah fitur pemrograman yang memastikan bahwa blok memori hanya dapat berisi data dari tipe data tertentu.

Semua koleksi Dart mendukung implementasi keamanan tipe melalui obat generik. Sepasang tanda kurung siku yang berisi tipe data digunakan untuk mendeklarasikan koleksi yang aman bagi tipe. Sintaks untuk mendeklarasikan koleksi tipe aman seperti yang diberikan di bawah ini.

Sintaksis

Collection_name <data_type> identifier= new Collection_name<data_type>

Implementasi tipe-aman dari List, Map, Set dan Queue diberikan di bawah ini. Fitur ini juga didukung oleh semua implementasi dari jenis koleksi yang disebutkan di atas.

Contoh: Daftar Umum

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

Ini harus menghasilkan yang berikut output -

WARNING 
ERROR 
INFO

Upaya untuk memasukkan nilai selain tipe yang ditentukan akan menghasilkan kesalahan kompilasi. Contoh berikut menggambarkan hal ini.

Contoh

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

Ini harus menghasilkan yang berikut output -

1                                                                                     
ERROR                                                                             
INFO

Contoh: Generic Set

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

Ini harus menghasilkan yang berikut output -

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

Contoh: Antrian Generik

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

Ini harus menghasilkan yang berikut output -

Default implementation ListQueue<int> 
20 
30 
40

Peta Umum

Deklarasi peta tipe aman menentukan tipe data -

  • Kunci
  • Nilai

Sintaksis

Map <Key_type, value_type>

Contoh

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

Ini harus menghasilkan yang berikut output -

Map :{name: Tom, Id: E1001}