- Dart 程式設計教程
- Dart 程式設計 - 首頁
- Dart 程式設計 - 概述
- Dart 程式設計 - 環境
- Dart 程式設計 - 語法
- Dart 程式設計 - 資料型別
- Dart 程式設計 - 變數
- Dart 程式設計 - 運算子
- Dart 程式設計 - 迴圈
- Dart 程式設計 - 決策
- Dart 程式設計 - 數字
- Dart 程式設計 - 字串
- Dart 程式設計 - 布林值
- Dart 程式設計 - 列表
- Dart 程式設計 - 列表
- Dart 程式設計 - 對映
- Dart 程式設計 - 符號
- Dart 程式設計 - 字元元
- Dart 程式設計 - 列舉
- Dart 程式設計 - 函式
- Dart 程式設計 - 介面
- Dart 程式設計 - 類
- Dart 程式設計 - 物件
- Dart 程式設計 - 集合
- Dart 程式設計 - 泛型
- Dart 程式設計 - 包
- Dart 程式設計 - 異常
- Dart 程式設計 - 除錯
- Dart 程式設計 - 型別定義
- Dart 程式設計 - 庫
- Dart 程式設計 - 非同步
- Dart 程式設計 - 併發
- Dart 程式設計 - 單元測試
- Dart 程式設計 - HTML DOM
- Dart 程式設計有用資源
- Dart 程式設計 - 快速指南
- Dart 程式設計 - 資源
- Dart 程式設計 - 討論
Dart 程式設計 - 泛型
Dart 是一種可選型別語言。Dart 中的集合預設情況下是異構的。換句話說,單個 Dart 集合可以容納各種型別的值。但是,可以使 Dart 集合儲存同構的值。可以使用泛型概念來實現此目的。
使用泛型會對集合中可以包含的值的資料型別施加限制。此類集合被稱為型別安全的集合。型別安全是程式設計功能,它確保記憶體塊只能包含特定資料型別的資料。
所有 Dart 集合都透過泛型支援型別安全實現。一對包含資料型別的尖括號用於宣告型別安全的集合。宣告型別安全集合的語法如下所示。
語法
Collection_name <data_type> identifier= new Collection_name<data_type>
List、Map、Set 和 Queue 的型別安全實現如下所示。上述所有集合型別的實現也支援此功能。
示例:泛型列表
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);
}
}
它應該產生以下輸出:
WARNING ERROR INFO
嘗試插入除指定型別以外的值將導致編譯錯誤。以下示例說明了這一點。
示例
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);
}
}
它應該產生以下輸出:
1 ERROR INFO
示例:泛型集合
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);
}
}
它應該產生以下輸出:
Default implementation :_CompactLinkedHashSet<int> 100 20 5 60 70
示例:泛型佇列
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);
}
}
它應該產生以下輸出:
Default implementation ListQueue<int> 20 30 40
泛型對映
型別安全的對映宣告指定了以下資料型別:
- 鍵
- 值
語法
Map <Key_type, value_type>
示例
void main() {
Map <String,String>m={'name':'Tom','Id':'E1001'};
print('Map :${m}');
}
它應該產生以下輸出:
Map :{name: Tom, Id: E1001}
廣告