다트 프로그래밍-제네릭

다트는 optionally typed language. Dart의 컬렉션은 기본적으로 이기종입니다. 즉, 단일 Dart 컬렉션은 다양한 유형의 값을 호스팅 할 수 있습니다. 그러나 Dart 컬렉션은 동일한 값을 유지하도록 만들 수 있습니다. Generics의 개념을 사용하여 동일한 결과를 얻을 수 있습니다.

Generics를 사용하면 컬렉션에 포함될 수있는 값의 데이터 유형에 제한이 적용됩니다. 이러한 컬렉션을 형식이 안전한 컬렉션이라고합니다. 유형 안전은 메모리 블록이 특정 데이터 유형의 데이터 만 포함 할 수 있도록하는 프로그래밍 기능입니다.

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

다음을 생성해야합니다. output

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

다음을 생성해야합니다. 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

일반지도

유형 안전 맵 선언은 데이터 유형을 지정합니다.

  • 열쇠
  • 가치

통사론

Map <Key_type, value_type>

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

다음을 생성해야합니다. output

Map :{name: Tom, Id: E1001}