Dart 编程 - 泛型


Dart 是一种可选类型的语言。Dart 中的集合默认是异构的。换句话说,单个 Dart 集合可以托管各种类型的值。然而,Dart 集合可以保存同质值。泛型的概念可以用来实现同样的目的。

泛型的使用对集合中可以包含的值的数据类型施加了限制。此类集合称为类型安全集合。类型安全是一种编程功能,可确保内存块只能包含特定数据类型的数据。

所有 Dart 集合都支持通过泛型实现类型安全。包含数据类型的一对尖括号用于声明类型安全集合。声明类型安全集合的语法如下所示。

句法

Collection_name <data_type> identifier= new Collection_name<data_type> 

下面给出了 List、Map、Set 和 Queue 的类型安全实现。上述集合类型的所有实现也支持此功能。

示例:通用列表

无效主(){
   列表 <String> logTypes = new List <String>();
   logTypes.add("警告");
   logTypes.add("错误");
   logTypes.add("INFO");  
   
   // 遍历列表
   for (logTypes 中的字符串类型) {
      打印(类型);
   }
}

它应该产生以下输出-

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

示例:通用队列

导入“dart:集合”;
无效主(){
   Queue<int> 队列 = new Queue<int>();
   print("默认实现${queue.runtimeType}");  
   队列.addLast(10);
   队列.addLast(20);
   队列.addLast(30);
   队列.addLast(40);
   队列.removeFirst();  
   
   for(int 队列中没有){
      打印(否);
   }
}

它应该产生以下输出-

Default implementation ListQueue<int> 
20 
30 
40

通用地图

类型安全映射声明指定以下数据类型 -

  • 钥匙
  • 价值

句法

Map <Key_type, value_type>

例子

无效主(){
   地图 <String,String>m={'name':'Tom','Id':'E1001'};
   print('地图:${m}');
}

它应该产生以下输出-

Map :{name: Tom, Id: E1001}