티스토리 뷰

iOS/Swift

Swift 문법 (9) - 열거형

포도 동 2020. 12. 8. 20:58

enum은 타입이므로 대문자 카멜케이스를 사용하여 정의합니다.

Swift의 열거형은 각 case 자체가 고유의 값입니다.

enum 이름 {
	case 이름1
	case 이름2
	case 이름3, 이름4, 이름5 // ,로 구분해 선언 가능
}
// 열거형 생성
enum Weekday {
  case mon
  case tue
  case wed
  case thu,fri,sat,sun
}

// 열거형 사용
var day: Weekday = Weekday.mon
// 타입이 명확하다면 .case 표현도 가능
day = .tue
print(day) // tue 출력

- case 에 모든 값을 구현하면 , Default 를 구현하지 않아도 됩니다.

-하나의 case 라도 구현하지 않으면 Default 를 포함해야합니다.

// default 없이 모든 case 구현
switch day {
case .mon, .tue, .wed, .thu:
	print("평일")
case .fri:
	print("불금")
case .sat, .sun:
	print("주말")
}

// default 포함
switch day {
case .fri:
	print("불금")
case .sat, .sun:
	print("주말")
default:
	print("평일")
}

- 열거형의 rawValue는 case별로 다른 값을 가져야합니다.

- 자동으로 1이 증가된 값이 할당됩니다.

enum Fruit: Int {
    case apple = 0
    case grape = 1
    case peach //자동으로 rawValue에 2 할당됨
}

print("Fruit.peach.rawValue == \(Fruit.peach.rawValue)") // Fruit.peach.rawValue == 2 출력

 

- 정수타입 뿐 아니라 , Hashable 을 따르는 모든 타입이 원시값의 타입으로 지정될 수 있습니다.

- rawValue를 지정하지 않은 case는 case 이름을 rawValue로 사용합니다.

enum School: String {
    case elementary = "초등"
    case middle = "중등"
    case high = "고등"
    case university
}

print("School.middle.rawValue == \(School.middle.rawValue)")
// School.middle.rawValue == 중등 출력

print("School.university.rawValue == \(School.university.rawValue)")
//rawValue를 입력하지 않은 case
// School.middle.rawValue == university 출력

- Swift 의 열거형은 메서드를 포함할 수 있습니다.

enum Weekday {
    case mon
    case tue
    case wed
    case thu,fri,sat,sun
    
    func printMessage(){
        switch self {
        case .mon, .tue, .wed, .thu:
            print("평일")
        case .fri:
            print("불금")
        case .sat, .sun:
            print("주말")
        }
    }
}

Weekday.mon.printMessage() // "평일" 출력

 

* [부스트코스] iOS 프로그래밍을 위한 스위프트 기초 학습 후 정리한 내용입니다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함