카테고리 없음
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 개념 있음