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}