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
<이상>
'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 |