目录

dart_programming编程 - 泛型(Generics)

Dart是一种optionally typed language 。 Dart中的集合默认是异构的。 换句话说,单个Dart集合可以托管各种类型的值。 但是,可以使Dart集合保持同质值。 泛型的概念可用于实现相同的目的。

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

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

语法 (Syntax)

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); 
   } 
}

它应该产生以下output -

WARNING 
ERROR 
INFO

尝试插入指定类型以外的值将导致编译错误。 以下示例说明了这一点。

例子 (Example)

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); 
   } 
} 

它应该产生以下output -

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); 
   } 
} 

它应该产生以下output -

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); 
   } 
}

它应该产生以下output -

Default implementation ListQueue<int> 
20 
30 
40

通用地图

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

  • The key
  • The value

语法 (Syntax)

Map <Key_type, value_type>

例子 (Example)

void main() { 
   Map <String,String>m={'name':'Tom','Id':'E1001'}; 
   print('Map :${m}'); 
} 

它应该产生以下output -

Map :{name: Tom, Id: E1001}
↑回到顶部↑
WIKI教程 @2018