Dart Programlama - Jenerikler

Dart bir optionally typed language. Dart'taki koleksiyonlar varsayılan olarak heterojendir. Başka bir deyişle, tek bir Dart koleksiyonu çeşitli türlerdeki değerleri barındırabilir. Bununla birlikte, homojen değerleri tutmak için bir Dart koleksiyonu yapılabilir. Jenerik kavramı aynı şeyi başarmak için kullanılabilir.

Generics kullanımı, koleksiyon tarafından içerilebilecek değerlerin veri türü üzerinde bir kısıtlama uygular. Bu tür koleksiyonlar, tür güvenli koleksiyonlar olarak adlandırılır. Tip güvenliği, bir bellek bloğunun yalnızca belirli bir veri türündeki verileri içermesini sağlayan bir programlama özelliğidir.

Tüm Dart koleksiyonları, jenerikler aracılığıyla tür güvenliği uygulamasını destekler. Veri türünü içeren bir çift köşeli parantez, tür açısından güvenli bir koleksiyon bildirmek için kullanılır. Tür açısından güvenli bir koleksiyon bildirmek için sözdizimi aşağıda verilmiştir.

Sözdizimi

Collection_name <data_type> identifier= new Collection_name<data_type>

List, Map, Set ve Queue'nun tür güvenli uygulamaları aşağıda verilmiştir. Bu özellik, yukarıda belirtilen koleksiyon türlerinin tüm uygulamaları tarafından da desteklenir.

Örnek: Genel Liste

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

Aşağıdakileri üretmelidir output -

WARNING 
ERROR 
INFO

Belirtilen türden farklı bir değer girme girişimi bir derleme hatasıyla sonuçlanacaktır. Aşağıdaki örnek bunu göstermektedir.

Misal

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

Aşağıdakileri üretmelidir output -

1                                                                                     
ERROR                                                                             
INFO

Örnek: Genel Küme

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

Aşağıdakileri üretmelidir output -

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

Örnek: Genel Sıra

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

Aşağıdakileri üretmelidir output -

Default implementation ListQueue<int> 
20 
30 
40

Genel Harita

Tür açısından güvenli bir harita bildirimi, veri türlerini belirtir -

  • Anahtar
  • Değer

Sözdizimi

Map <Key_type, value_type>

Misal

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

Aşağıdakileri üretmelidir output -

Map :{name: Tom, Id: E1001}