Study/Dart,Flutter

18. [Dart, Flutter] dart enum에 대하여

코딩 잘 할거얌:) 2024. 1. 8. 10:40
반응형

다음 포스팅의 Extension을 위해, 

 

오늘은 dart의 enum에 대하여 간단하게 알아보자.

 

 

아 진짜 쉬워요 간단해요

 


 

1. Enum

1.1 Enum이 무엇인가?

https://dart-ko.dev/language/enum

 

열거 타입

Dart의 열거 타입에 대해 학습합니다.

dart-ko.dev

 

여기에 한국어로 적혀있지만, 설명을 하도록 하겠다.

 

전체이름은 Enumerations, 직역하면 열거형, 목록 이라고 할 수 있다. 이 타입은 상수값을 가지는 클래스라고 할 수 있다

이게 무슨뜻인지 정확하게 코드를 보며 이해해보자.

enum Color { red, green, blue }

enum SexType { man, woman, others}

enum Country {korea, usa, ...}

 

대충 이렇게 지을 수 있다. 이렇게 사용하면 사용법은 다음과 같다.

 

Color colorType = Color.red;

SexType sexType = SexType.man;

CountryType ctyType = CountryType.korea;

 

이렇게 사용할 수 있다.

 

1.2 enum 사용 목적

enum 에 대해서 알아보았다. 간단하게 상수를 작성해주기 위해 사용한다고 생각하면 좋다.

 

그렇다면 이런질문이 충분히 나올 수 있다고 생각한다.

 

"왜 상수로 간단하게 작성안하고 굳이 enum으로 사용하나요? 예를들어 아래코드와 같이 써도 되잖아요?"

String sexType1 = "man"
String sexType2 = "woman"

 

맞다 이렇게 써도 된다. 다만 enum을 사용하는 이유를 여러가지 살펴보자면,

 

  1. 코드가 단순해지고 가독성이 좋다.
  2. 타입확인이 가능하여 컴파일타임에 안정성을 확인할 수 있다.
  3. 유지보수가 편리하다.

우선, 코드가 단순해지고 가독성이 좋은건, 코드를 상수로 적었을때를 비교하면 한눈에 단순하고 가독성이 좋다고 할 수 있다. 

 

두번째로, '타입확인이 가능하여 컴파일타임에 안정성을 확인할 수 있다.' 는 컴파일타임 당시에 타입을 확인하고 iDE에서 이 코드가 오류가 있는지 없는지 확인이 가능하고, 개발자의 오탈자를 방지할 수 있다는 장점이 있다.

 

미자막으로 '유지보수가 편리하다.' 는 상수로 정의했을 때에 값이 변경이 되면 모든것을 바꿔야하는데, enum은 하나만 변경해도 된다는 장점이 있다.

 

코드로 살펴보자.

 

/// enum을 사용하지 않았을 경우.

const int red = 0;
const int green = 1;
const int blue = 2;

void main() {
  int selectedColor = 1;

  if (selectedColor == green) {
    print('초록색을 선택했습니다.');
  }
}

/// enum을 사용한 경우.

enum Color {
  red,
  green,
  blue,
}

void main() {
  Color selectedColor = Color.green;
	
  if (selectedColor == Color.green) {
    print('초록색을 선택했습니다.');
  }
}

 

 

이해가 되지않는다면 일단 사용해보라. 확실히 체감이 달라진다.

 

1.3 프로젝트에 실사용하는 부분.

실사용하는 부분은 서버에서 데이터를 받았을 때, 여러가지 타입에 사용하는 경우가 많다.

 

예를들어.

 

유저의 성별에 관련된 것을 사용한다 했을때, 다음과 같이 열거형을 사용할 수 있다.

enum SexType {
  man(toKorean: "남성"),
  woman(toKorean: "여성"),
  none(toKorean: "선택안함");

  final String toKorean;

  
  const SexType({required this.toKorean});
}


String sexualType = SexType.man.toKorean;

 

이렇게 쓰면 확실히 편리하다.


 

 

다음엔 extension을 활용하는 법을 소개하겠다.

728x90