Set

A tour of the Dart language 페이지를 공부하면서 정리한 내용입니다.

집합은 정렬되지 않은 고유한 항목들로 이루어진 컬렉션입니다. Set 타입을 통해 제공되며 {...} 표현식으로 리터럴을 지원합니다. 아래 코드에서 halogens 변수는 Set<String> 타입으로 추론됩니다. Set에 다른 타입을 추가할 경우 컴파일 타임 또는 런타임 오류가 발생합니다. 타입 인수를 {}앞에 사용하거나 Set 변수에 할당하면 빈 Set을 생성합니다.

void main() {
  var halogens = {'fluorine', 'chlorine', 'bromine', 'iodine', 'astatine'};

  // Error: The argument type 'int' can't be assigned to the parameter type 'String'.
  halogens.add(1);

  var names = <String>{};
  // 위와 동일한 표현식입니다.
  // Set<String> names = {};

  // 타입 어노테이션 없이 {}만 사용하면 Map 객체가 생성됩니다.
  var empty = {};
  print(empty.runtimeType);
}

Map 리터럴 표현식은 Set 리터럴과 문법이 유사합니다. Map 리터럴이 더 먼저 지원되기 시작해서 {}의 기본 타은 Map입니다. {} 리터럴 사용 시 타입 어노테이션이 타입 인수를 선언하지 않으면 Map<dynamic, dynamic> 타입의 객체가 생성됩니다.

Set에 항목을 추가할 때는 add() 또는 addAll() 메서드 사용합니다. 또한 length 속성을 이용하여 항목의 수를 구합니다.

Set 리터럴 앞에 const 키워드를 붙이면 컴파일 타임 상수로 선언할 수 있습니다. Set 타입도 List 타입과 같이 전개 연산자collection if, for를 사용할 수 있습니다.

Set 타입은 다양한 속성과 메서드를 제공하고 있습니다.

Last updated