요일 변수에는 올 수 있는 값은 "월,화,수,목,금,토,일" 이 7가지 중 한가지 일것입니다.
var 요일: String = "월, 화, 수, 목, 금, 토, 일" 중 한가지
현재 요일은 String 타입의 변수입니다.
값을 입력받을때 오타가 발생하거나 의도적으로 월화수목금토일 이외의 값이 온다면
저희가 원하는 상황이 아니겠죠.
이같이 한정된 케이스로 정의 할 수 있을 때 열거형을 사용하는 것이죠
(ex: 동서남북, 남여, 가위바위보 등)
요일 변수가 String타입이 아니라 월화수목금토일의 값만 받을 수 있게 열거형타입으로 바꾸는 것이죠.
enum Weekday {
case 월요일
case 화요일
case 수요일
case 목요일
case 금요일
case 토요일
case 일요일
}
var 요일: Weekday = .월요일
이와 같이 요일을 Weekday타입으로 변경해주면 월화수목금토일 외의 값이 오는 경우를 차단할 수 있습니다.
정의
열거형의 각 case는 그 자체가 고유의 값입니다.
각 case는 한줄에 또는 여러줄로도 정의가 가능합니다.
// 여러줄로 정의
enum Weekday {
case 월요일
case 화요일
case 수요일
case 목요일
case 금요일
case 토요일
case 일요일
}
// 한줄에 정의
enum Weekday {
case 월요일, 화요일, 수요일, 목요일, 금요일, 토요일, 일요일
}
// 섞어서도 가능하다
enum Weekday {
case 월요일, 화요일, 수요일
case 목요일
case 금요일, 토요일
case 일요일
}
사용법
열거형의 사용법은 열거형의이름.케이스 형태로 사용합니다.
하지만 타입이 명확하다면 .케이스 형태로도 사용가능합니다.
// 타입이 명확할 경우
var monday: Weekday = .월요일
print(monday) // 월요일
// 타입이 명확하지 않을 경우
var tuesday = Weekday.화요일
print(tuesday) // 화요일
열거형의 케이스는 그 자체로 고유한 값이라고 설명드렸죠 ??
그래서 출력해보면 case 그 자체가 나오게 됩니다.
하지만 case 말고 String이나 Int와 같은 case 고유의 값말고 다른 값을 얻고 싶다면요 ?