카테고리 없음

Dart 심화 문법(2) - 열거형(Enumerations)

화춘기 2025. 7. 1. 13:09

Today I Learned (250630) 2-1.

열거형(Enumerations)

여러 개의 상수 값을 묶은 형태로

연관된 상수 (고정된 값) 들의 집합을 정의할 때 사용

 

enum [열거형 이름] { 요소 }

enum Color { red, green, blue } //요소들 한 줄에 나열 가능
enum Animal {
  cat,
  dog,
  tiger,
  elephant
} //요소들 여러 줄에 나열 가능

 

- 열거형 이름을 통해 열거형에 포함된 값에 접근할 수 있음

enum Color { red, green, blue };
var myFavoriteColor = Color.blue;
print(myFavoriteColor); // Color.blue

 

- switch 문을 통해 열거형에 포함된 값 각각을 다룰 수 있음

enum Color { red, green, blue };

var myFavoriteColor = Color.green;
var result = '내가 제일 좋아하는 색은 ';

switch (myFavoriteColor) {
  case Color.red:
    result += '빨간색';
  case Color.green:
    result += '초록색';
  case Color.blue:
    result += '파란색';
}

print(result); // 내가 제일 좋아하는 색은 초록색

//switch문은 하나의 값에 대해 나올 수 있는 경우를 모두 고려할 때 사용

 

- if문도 가능하지만 열거형은 주로 switch문을 사용

enum Color { red, green, blue };

var myFavoriteColor = Color.green;
var result = '내가 제일 좋아하는 색은 ';

if (myFavoriteColor == Color.red) {
  result += '빨간색';
} else if (myFavoriteColor == Color.green) {
  result += '초록색';
} else if (myFavoriteColor == Color.blue) {
  result += '파란색';
}

print(result); // 내가 제일 좋아하는 색은 초록색

 

- index를 통해 열거형에 포함된 값이 열거형의 몇 번째에 있는지 알 수 있음

/* 열거형에 값이 나열되어 있는 순서대로 index 부여,
List의 Index 체계와 마찬가지로 열거형도 첫번째 값의 index는 0 */
enum Color { red, green, blue };

print(Color.red.index); // 0
print(Color.green.index); // 1
print(Color.blue.index); // 2

 

- values를 통해 열거형에 포함된 값들을 알 수 있음

enum Color { red, green, blue };

var colors = Color.values;
print(colors); // [Color.red, Color.green, Color.blue]
print(colors[1]); // Color.green

//colors는 List<Color> 타입으로 추론

 

- name을 통해 열거형에 포함된 값의 이름을 알 수 있음

enum Color { red, green, blue }
print(Color.red.name); // red

Set과 열거형 enum 비교

1. 처음 정의된 상태에서 값 추가 또는 제거 가능 > Set / 불가 > enum

 - Set에 값을 추가하려면, add(), addAll() 사용

 - Set에 있는 값을 제거하려면, remove() 사용

 

2. 중복 값을 넣었을 때 오류 발생 여부

- Set은 오류 발생하지 않음 / enum은 오류 발생

enum Color { red, green, blue, red }
// Error: 'red' is already declared in this scope.

 

3. 요소들 사이의 순서

- Set 순서 없음 / enum 순서 있음

- 순서가 있는지는 Index 개념을 보면 됨 > Set은 Index 개념 없음, enum에는 Index 개념 있음