열거형 (Enumerations)

Eungae's avatar
Dec 08, 2025
열거형 (Enumerations)

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

enum의 선언은 main 함수 이전에 top-level에서 선언되어야 한다. (like import)

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

enum Beer { lager, pilsner, stout, ale }

void main() {
  var favoriteBeer = Beer.lager;
  print(favoriteBeer);
} // Beer.lager

switch문으로 포함된 값 각각을 다루기

switch문은 이 열거형을 위해 나왔다고 봐도 과언이 아닐 정도로 열거형과 잘 맞는다고 한다.

enum Beer { lager, pilsner, stout, ale }

void main() {
  var favoriteBeer = Beer.lager;
  var result = '내가 제일 좋아하는 맥주는 ';

  switch (favoriteBeer) {
    case Beer.lager:
      result += '라거!';
    case Beer.pilsner:
      result += '필스너!';
    case Beer.stout:
      result += '스타우트!';
    case Beer.ale:
      result += '에일!';
    default:
      result += '생맥주!';
  }
  print(result);
}

// 내가 제일 좋아하는 맥주는 라거!

.values를 통해 열거형에 포함된 값들을 알아보기

열거형은 List<type>으로 추론된다.

enum Beer { lager, pilsner, stout, ale }

void main() {  
  print(Beer.values);
} // [Beer.lager, Beer.pilsner, Beer.stout, Beer.ale]
enum Beer { lager, pilsner, stout, ale }

void main() {  
  print(Beer.values[1]);
} // Beer.pilsner

.name을 통해 열형에 포함된 값으 이름 확인하기

enum Beer { lager, pilsner, stout, ale }

void main() {  
  print(Beer.values[1].name);
} // pilsner

.index를 통해 열거형에 포함된 값이 열거형의 몇 번째에 있는지 확인

enum Beer { lager, pilsner, stout, ale }

void main() {  
  for (var beer in Beer.values) {
  print("$beer : ${beer.index}");
  } 
}

/*
Beer.lager : 0
Beer.pilsner : 1
Beer.stout : 2
Beer.ale : 3 
*/

Set과의 차이점

  • 새로운 값의 추가

    • Set => 가능 : .add(), .addAll()

    • enum => 불가능

  • 값의 제거

    • Set => 가능 : .remove(), .removeAll()

    • enum => 불가능

  • 중복 값을 넣었을 때 오류 발생

    • Set 발생 X

    • enum 발생 O

  • 요소들 사이에 순서가 있는지

    • Set 없음

    • enum 있음 — index 있음

Share article

나새끼메이커