1. Dart에서 enum이란?
Dart에서 enum(열거형)은 관련된 상수 값을 그룹화하여 표현하는 방법입니다. 일반적으로 특정 옵션을 사전에 정의해놓을 때 사용됩니다. Dart의 enum은 코드의 가독성을 높이고, 실수를 줄이는 데 도움이 됩니다.
2. Dart에서 enum 선언하기
Dart에서 enum을 선언하는 기본적인 문법은 다음과 같습니다.
이 예제에서는 Status라는 enum을 정의하고, pending, approved, rejected 세 가지 상태를 포함하고 있습니다.
enum Status {
approved,
pending,
rejected,
}
3. enum 값 사용하기
enum 값을 사용하는 방법은 다음과 같습니다.
void main() {
Status currentStatus = Status.approved;
print(currentStatus); // 출력: Status.approved
}
특정 enum 값을 확인하려면 다음과 같이 비교할 수 있습니다:
void main() {
Status currentStatus = Status.approved;
if (currentStatus == Status.approved) {
print("승인된 상태입니다.");
}
}
4. enum을 문자열로 변환하기
Dart에서 enum 값을 문자열로 변환할 때는 .toString() 또는 .name 속성을 사용할 수 있습니다.
void main() {
Status currentStatus = Status.approved;
print(currentStatus.toString()); // 출력: SStatus.approved
print(currentStatus.name); // 출력: approved
}
toString()을 사용하면 enum 이름 앞에 Status.와 같은 접두사가 붙지만, .name을 사용하면 순수 문자열 값만 얻을 수 있습니다.
5. 문자열을 enum으로 변환하기
문자열을 enum 값으로 변환하려면 values.firstWhere() 메서드를 사용할 수 있습니다.
Status stringToEnum(String status) {
return Status.values.firstWhere((e) => e.name == status, orElse: () => Status.pending);
}
void main() {
String statusString = "approved";
Status statusEnum = stringToEnum(statusString);
print(statusEnum); // 출력: Status.approved
}
이렇게 하면 문자열 값을 안전하게 enum으로 변환할 수 있습니다.
6. enum에 추가 기능(메서드 및 속성) 추가하기
Dart 2.15부터는 enum에 메서드와 속성을 추가할 수 있습니다.
각 enum 값에 description 속성을 추가하고, printDescription 메서드를 정의하면 됩니다.
enum Role {
admin("관리자"),
user("사용자"),
guest("손님");
final String description;
const Role(this.description);
void printDescription() {
print("역할: $description");
}
}
void main() {
Role role = Role.admin;
role.printDescription(); // 출력: 역할: 관리자
}
7. switch문에서 enum 사용하기
Dart에서 switch 문과 enum을 함께 사용하면 가독성이 뛰어난 코드를 작성할 수 있습니다.
void checkStatus(Status status) {
switch (status) {
case Status.pending:
print("처리 중입니다.");
break;
case Status.approved:
print("승인되었습니다.");
break;
case Status.rejected:
print("거절되었습니다.");
break;
}
}
switch 문을 사용할 때 모든 enum 값을 처리하는 것이 좋습니다. 그렇지 않으면 컴파일러에서 경고가 발생할 수 있습니다.
8. enum을 리스트로 활용하기
enum의 values 속성을 사용하면 enum 값 전체를 리스트로 다룰 수 있습니다.
void main() {
for (var status in Status.values) {
print(status);
}
}
이 코드를 실행하면 모든 enum 값이 출력됩니다.
9. 결론
Dart에서 enum은 코드의 가독성을 높이고, 실수를 방지하며, 특정 상태나 옵션을 효과적으로 관리할 수 있는 강력한 기능입니다. 최신 Dart 버전에서는 enum에 속성과 메서드를 추가할 수도 있어 더욱 유용하게 사용할 수 있습니다! 😊