다트 프로그래밍-제네릭
다트는 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}