반응형

Dart 집합 자료형 Set

 

글. 수알치 오상문

 

다트의 Set 자료형은 순서가 없는 유일한 항목들로 이루어진 집합 자료형입니다. 간단한 Set 객체 초기화 예는 다음과 같습니다.

 

var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};

 

참고: 이 예제에서 다트는 halogens를  Set<String> 형으로 인식합니다. 만약 문자열이 아닌 다른 형을 추가한다면 오류가 발생합니다. (참조: 타입 추론 type inference)

 

빈 set을 만들려면 항목의 자료형을 앞에 지시한 { }를 사용합니다. 예는 다음과 같습니다.

 

var names = <String>{}; // Set<String> names = {};

// 만약 아래처럼 생성하면 

// var names = {};

// 빈 맵 자료형(map)이 된다

 

Set인가 map인가? 

만약 { }만 사용한다면 기본적으로 맵 형이 됩니다. 즉, 다트는 Map<dynamic, dynamic> 형태로 인식합니다.

 

존재하는 집합 객체에 항목을 추가하려면 add() 또는 addAll() 메서드를 사용합니다.

 

var elements = <String>{};   // 집합 객체 생성 

elements.add('fluorine');       // 항목 한 개 추가 

elements.addAll(halogens);   // 기존 집합 객체를 이용한 여러 개 항목 추가 

 

length는 집합에 있는 항목 개수를 돌려줍니다.

 

var elements = <String>{};

elements.add('fluorine');          // 1개 추가

elements.addAll(halogens);      // 5개 추가 

assert(elements.length == 5);  // 5개? 'fluorine' 항목은 중복되어서 하나만 남으므로 5개가 맞다.

 

컴파일 시간에 상수 값을 가진 집합 객체를 만들고 싶으면 const를 집합 값 앞에 추가합니다.

 

final constantSet = const { 'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine', };

// constantSet.add('helium');  이렇게 추가하려고 하면 오류 발생!!!

 

리스트처럼 집합 초기화에서도 전개 연산자(... 그리고 ...?) 그리고 if와 for 형식도 지원합니다.

참조: list spread operator ,  list collection operator 

 

더 자세한 정보: Generics 그리고 Sets.

 

<이상>

반응형

'Dart' 카테고리의 다른 글

Dart, 함수  (0) 2021.06.14
Dart, 맵(사전) 자료형 Map  (0) 2021.06.14
Dart 리스트 자료형 List  (0) 2021.06.12
Dart 논리 자료형 bool  (0) 2021.06.12
Dart 문자열 자료형 String  (0) 2021.06.12

+ Recent posts