📅  最后修改于: 2020-11-05 04:23:05             🧑  作者: Mango
Dart是一种可选的输入语言。默认情况下,Dart中的集合是异构的。换句话说,单个Dart集合可以托管各种类型的值。但是,可以使Dart集合保留同一个值。泛型的概念可用于实现相同目的。
泛型的使用对集合可以包含的值的数据类型施加了限制。这样的集合称为类型安全集合。类型安全是一种编程功能,可确保存储块只能包含特定数据类型的数据。
所有Dart集合都通过泛型支持类型安全实施。一对包含数据类型的尖括号用于声明类型安全的集合。声明类型安全集合的语法如下。
Collection_name identifier= new Collection_name
下面给出了List,Map,Set和Queue的类型安全实现。上述收集类型的所有实现也支持此功能。
void main() {
List logTypes = new List ();
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 logTypes = new List ();
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 numberSet = new Set();
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
100
20
5
60
70
import 'dart:collection';
void main() {
Queue queue = new Queue();
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
20
30
40
类型安全的映射声明指定-的数据类型
Map
void main() {
Map m={'name':'Tom','Id':'E1001'};
print('Map :${m}');
}
它应该产生以下输出–
Map :{name: Tom, Id: E1001}