
- 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}
廣告