iOS - Swift
[iOS/Swift/Basic] 열거형 Enumerations : 원시값 Raw Values, 연관값 Associated Values
개발자 수니
2024. 1. 24. 19:30
728x90
반응형
열거형 Enumerations
- 연관된 항목들을 묶어서 표현할 수 있는 타입
- 프로그래머가 정의해준 항목 값 외에는 추가/수정이 불가
열거형(Enumerations)을 사용하는 경우
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정되어 있을 때
열거형(Enumerations)의 선언
// Pay Enumerations 선언
enum Pay {
case cash // 현금
case card // 카드
case etc // 기타
case empty // 결제 종류 없음
}
// Pay Enumerations 선언 - 한 줄 버전
enum Pay {
case cash, card, etc, empty
}
열거형(Enumerations) 변수의 생성 및 변경
var userPay: Pay = Pay.empty
// 같은 타입인 Pay 내부의 항목으로만 변경 가능
userPay = .card
원시 값 Raw Values
열거형(Enumerations)은 항목의 원시 값(Raw Values)을 가질 수 있다.
원시 값(Raw Values) 지정과 사용
// Raw Values 지정
enum Pay: String {
case cash = "현금"
case card = "카드"
case etc = "기타"
case empty = "결제 종류 없음"
}
// Raw Values 사용
var userPay: Pay = .card
print("회원님의 결제 타입은 '\(userPay.rawValue)' 입니다.") // 회원님의 결제 타입은 '카드' 입니다.
원시 값(Raw Values) 자동 처리
열거형(Enumerations) 선언 시, 원시 값(Raw Values)을 지정하지 않을 경우 Swift는 원시 값(Raw Values)을 자동으로 처리
- String타입 enum
// String enum
enum Pay: String {
case cash = "현금"
case card = "카드"
case kakaopay
}
let myPay = Pay.kakaopay
print("나의 결제 타입은 '\(myPay.rawValue)' 입니다.") // 나의 결제 타입은 'kakaopay' 입니다.
- Int타입 enum
// Int enum
enum Numbers: Int {
case zero, one, two
case ten = 10
}
print("\(Numbers.zero.rawValue) - \(Numbers.one.rawValue) - \(Numbers.two.rawValue) - \(Numbers.ten.rawValue)")
// 0 - 1 - 2 - 10
원시 값(Raw Values)을 사용한 열거형(Enumerations)초기화
enum Pay: String {
case cash = "현금"
case card = "카드"
case kakaopay
}
// Raw Values를 사용한 Enumerations 초기화
var card = Pay(rawValue: "카드") // card
var kakaoPay = Pay(rawValue: "카카오 페이") // nil
연관 값 Associated Values
열거형(Enumerations)의 각 항목(case)은 연관 값(Associated Values)을 가질 수 있다.
// Associated Values을 가지는 Enumerations
enum Menu {
case set(burger: String, drink: String)
case single(burger: String)
}
// 사용
var order: Menu = Menu.single(burger: "불고기") // 불고기 버거 단품
order = .set(burger: "치즈", drink: "콜라") // 치즈 버거 + 콜라 세트
- 여러 열거형(Enumerations) 응용
enum Burger {
case bulgogi
case shrimp
case cheese
}
enum Drink {
case coke
case fanta
}
// Associated Values을 가지는 Enumerations
enum Menu {
case set(burger: Burger, drink: Drink)
case single(burger: Burger)
}
// 사용
var order: Menu = Menu.single(burger: .bulgogi) // 불고기 버거 단품
order = .set(burger: .cheese, drink: .coke) // 치즈 버거 + 콜라 세트
🙋🏻♀️ 참고
야곰, ⌜스위프트 프로그래밍: Swift5⌟, 한빛미디어(2019)
728x90
반응형