Dart/OOP

Dart 문법 OOP - enum

codeJunH 2024. 8. 21. 16:04

enum의 기본 개념

enum은 상수 데이터들의 집합이다.

주로 특정한 상태나 옵션 값들을 한정적인 선택지로 제공할 때 사용된다.

 

 

Dart에서 enum 사용하기

다음은 Dart에서 enum을 정의하고 사용하는 기본적인 예제이다:

이 예제에서:

  1. enum 선언: enum Color { red, green, blue }
    • Color라는 enum 타입을 선언한다.
    • enum은 클래스의 일종이므로 함수나 다른 클래스 안에 정의될 수 없다.
  2. enum 타입의 color 클래스: Color
    • enum 키워드를 클래스 앞에 선언하면, 해당 클래스는 Enum(열거형) 클래스가 된다.
  3. enum의 모든 값 조회: Color.values
    • Enum 값을 사용하려면 Enum 클래스 이름과 값 이름을 . 연산자로 연결한다.
    • enum의 모든 열거값 목록을 얻을 수 있다.
    • 출력 결과: [Color.red, Color.green, Color.blue]
  4. index와 name 멤버:
    • 각 열거값은 index와 name 멤버를 갖는다.
    • index: 0부터 시작하여 순차적으로 부여된 값
    • name: 각 열거값의 이름
  5. switch 문에서 enum 사용:
    • enum을 switch 문에서 사용할 때는 모든 열거값에 대한 처리를 포함해야 한다.
    • 누락된 case가 있으면 경고가 발생한다.

 

 

enum의 고급 기능 (Dart 2.17 이상)

Dart 2.17부터 enum에 더 많은 기능이 추가되었다:

이 예제에서는:

  • enum에 생성자를 추가했다.
  • 각 열거값에 추가적인 속성을 부여했다.
  • enum에 메서드를 정의했다.

 

 

enum 사용의 이점

  1. 타입 안전성: 컴파일 시점에 타입 체크가 가능하다.
  2. 코드 가독성: 의미 있는 이름으로 상수를 표현할 수 있다.
  3. 유지보수성: 관련된 상수들을 그룹화하여 관리할 수 있다.
  4. 실수 방지: 제한된 선택지만 사용 가능하므로 잘못된 값 사용을 방지한다.

 

 

주의사항

  1. 확장 불가: enum은 다른 클래스를 상속받거나 인터페이스를 구현할 수 없다.
  2. 인스턴스화 불가: enum의 새로운 인스턴스를 생성할 수 없다.
  3. 값 추가/제거 시 주의: enum에 값을 추가하거나 제거할 때는 해당 enum을 사용하는 모든 코드를 검토해야 한다.