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}