무기/다트

[다트] enhanced enum - String 값으로 Enum 값 얻기

디벅잉 2024. 2. 17. 11:37
728x90

 

🎯

 

Dart 언어에서의 enhanced enum은 기존의 열거형(enum)에 더 많은 기능을 추가하여, 각 열거형 값에 메서드를 추가하거나, 계산된 프로퍼티를 포함시킬 수 있게 해줍니다.

이는 코드의 가독성과 유지 보수성을 크게 향상시킬 수 있는 강력한 기능입니다.

 

Enhanced Enum의 주요 특징

- 메서드 추가: 각 열거형 값에 대해 메서드를 정의할 수 있습니다.

- 프로퍼티 추가: 열거형 값에 계산된 프로퍼티를 추가할 수 있습니다.

- 타입 안전성: 열거형을 사용함으로써 코드 내에서 타입 안전성을 보장받을 수 있습니다.

 

String 값으로 Enum 값 얻기: Static Method 예시

enhanced enum을 사용하여 String 값을 입력받아 해당하는 열거형 값을 반환하는 static method를 구현할 수 있습니다.

아래는 그러한 구현의 예시입니다.

enum Status {
  pending('pending'),
  approved('approved'),
  rejected('rejected');

  // enum 생성자
  const Status(this.value);
  
  // 각 enum 값에 해당하는 String 값을 저장하기 위한 프로퍼티
  final String value;

  // String 값을 입력받아 해당하는 Status enum 값을 반환하는 static 메서드
  static Status fromString(String value) {
    return Status.values.firstWhere(
      (status) => status.value == value,
      orElse: () => throw ArgumentError('Unknown status value: $value'),
    );
  }
}

이 예시에서는 Status라는 열거형을 정의하고 있으며, 각 열거형 값에 대응되는 String 값을 프로퍼티로 가지고 있습니다.

fromString이라는 static 메서드를 통해, 주어진 String 값에 해당하는 Status 열거형 값을 찾아 반환합니다.

만약 일치하는 값이 없을 경우, ArgumentError를 발생시키도록 처리하였습니다.

 

이러한 방법으로 enhanced enum을 활용하면, 더 유연하고 강력한 열거형을 Dart에서 사용할 수 있게 됩니다.

Dart에서 제공하는 이 기능은 코드의 가독성과 유지 보수성을 향상시키는 데 큰 도움이 됩니다.

 

728x90