'switch' 문에서의 Enum
Coddy Dart 여정의 로직 & 흐름 섹션에 포함된 레슨 — 65개 중 61번째.
열거형(enums)의 가장 강력한 활용 사례 중 하나는 switch 문과 함께 사용하는 것입니다. 열거형을 switch 문과 결합하면 더 안전하고 유지보수가 쉬운 코드를 작성할 수 있습니다.
switch 문에서 enum을 사용하는 방법은 다음과 같습니다:
enum Status {
pending,
running,
completed
}
Status currentStatus = Status.pending;
switch (currentStatus) {
case Status.pending:
print('Task is waiting to start');
break;
case Status.running:
print('Task is currently in progress');
break;
case Status.completed:
print('Task has been finished');
break;
}switch 문과 함께 열거형(enums)을 사용하는 것의 장점은 Dart가 모든 가능한 열거형 값을 처리했는지 확인할 수 있다는 점입니다. 열거형 값 중 하나에 대한 case를 포함하는 것을 잊어버리면 Dart가 경고를 표시하여 코드의 버그를 방지하는 데 도움을 줍니다.
이 방식은 오타로 인해 예기치 않은 동작이 발생할 수 있는 switch 문에서 문자열이나 숫자를 사용하는 것보다 훨씬 안전합니다. enums를 사용하면 코드가 가능한 모든 시나리오를 처리하도록 보장하는 컴파일 타임 체크를 받을 수 있습니다.
챌린지
쉬움열거형(enums)과 switch 문을 사용하여 게임 캐릭터의 상태를 관리하는 프로그램을 작성하세요. 여러분의 과제는 다음과 같습니다:
idle,walking,running,jumping,attacking값을 가지는CharacterState라는 이름의 열거형을 정의합니다.CharacterState타입의currentState라는 변수를 생성하고CharacterState.idle값을 할당합니다.CharacterState매개변수를 받아 switch 문을 사용하여 상태에 따른 문자열 메시지를 반환하는getStateMessage함수를 생성합니다:CharacterState.idle의 경우:"Character is standing still"을 반환합니다.CharacterState.walking의 경우:"Character is moving slowly"를 반환합니다.CharacterState.running의 경우:"Character is moving quickly"를 반환합니다.CharacterState.jumping의 경우:"Character is in the air"를 반환합니다.CharacterState.attacking의 경우:"Character is fighting"을 반환합니다.- 함수를 사용하여 다음의 정확한 형식으로 초기 상태 메시지를 출력합니다:
Initial state: Character is standing still currentState를CharacterState.walking으로 변경합니다.- 다음의 정확한 형식으로 업데이트된 상태 메시지를 출력합니다:
Updated state: Character is moving slowly currentState를CharacterState.attacking으로 변경합니다.- 다음의 정확한 형식으로 최종 상태 메시지를 출력합니다:
Final state: Character is fighting
프로그램은 switch 문과 열거형을 적절히 사용하여 이러한 조합이 어떻게 타입 안전(type-safe)한 상태 관리를 제공하는지 보여주어야 합니다. switch 문은 모든 열거형 값을 처리하고 각 캐릭터 상태에 맞는 적절한 메시지를 반환해야 합니다. Dart 명명 규칙을 따르고 위에 지정된 정확한 문자열 메시지를 사용해야 합니다.
치트 시트
Enum은 타입 안전한 코드를 위해 switch 문과 함께 잘 작동합니다:
enum Status {
pending,
running,
completed
}
Status currentStatus = Status.pending;
switch (currentStatus) {
case Status.pending:
print('Task is waiting to start');
break;
case Status.running:
print('Task is currently in progress');
break;
case Status.completed:
print('Task has been finished');
break;
}Dart는 switch 문에서 모든 enum 값이 처리되는지 확인하여 버그를 방지하고 컴파일 타임 체크를 제공합니다.
직접 해보기
import 'dart:io';
// TODO: 여기에 CharacterState 열거형(enum)을 정의하세요
// TODO: 여기에 getStateMessage 함수를 만드세요
void main() {
// TODO: 아래에 코드를 작성하세요
// currentState 변수를 생성하고 CharacterState.idle을 할당하세요
// 초기 상태 메시지를 출력하세요
// currentState를 CharacterState.walking으로 변경하세요
// 업데이트된 상태 메시지를 출력하세요
// currentState를 CharacterState.attacking으로 변경하세요
// 최종 상태 메시지를 출력하세요
}이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
로직 & 흐름의 모든 레슨
1고급 리스트 조작
리스트 속성: first 및 last리스트 상태: isEmpty 및 isNotEmpty리스트 뒤집기리스트에 추가: insert리스트 요소 제거: removeWhere리스트에서 찾기: indexOf리스트 정렬리스트 섞기요약 - 리스트 정리 도구