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