반응형
열거형
열거형은 연관된 항목들을 묶어서 표현할 수 있는 타입입니다. 프로그래머가 정의한 값 외에는 추가 혹은 수정이 불가능한 타입입니다.
열거형을 사용하는 경우는 아래와 같습니다.
- 제한된 선택지를 주고 싶을 때
- 정해진 값 외에는 입력받고 싶지 않을 때
- 예상된 입력 값이 한정되어 있을 때
열거형 선언 방법
enum [열거형 이름] {
case [선택지 1]
case [선택지 2]
...
}
// 열거형 선언
enum Heroes {
case ironman
case hulk
case captain
case blackwidow
case thor
case spiderman
case antman
}
// 한 줄 표현
enum Heroes {
case ironman, hulk, captain, blackwidow, thor, spiderman, antman
}
var favoriteHero: Heroes = Heroes.ironman
print(favoriteHero)
// ironman
// 같은 표현
var favoriteHero: Heroes = .ironman
favoriteHero = .hulk
print(favoriteHero)
// hulk
특정 타입의 원시값을 갖고 싶은 경우 아래와 같이 열거형 이름 오른쪽에 타입을 명시하면 됩니다. 만약 원시값이 정수값인 상태에서 지정하지 않으면 0부터 1씩 늘어난 정수값을 갖습니다.
// 특정 타입의 값을 원시값으로 갖고 싶은 경우, 열거형 이름 오른쪽에 타입을 명시
// 만약 원시값이 정수값인 상태에서 지정하지 않으면 0부터 1씩 늘어난 정수값을 갖는다.
enum Heroes: String {
case ironman = "아이언맨"
case hulk = "헐크"
case captain = "캡틴"
case blackwidow = "블랙위도우"
case thor = "토르"
case spiderman = "스파이더맨"
case antman = "앤트맨"
}
var favoriteHero: Heroes = Heroes.ironman
print("제가 가장 좋아하는 히어로는 \(favoriteHero.rawValue) 입니다.")
// 제가 가장 좋아하는 히어로는 아이언맨 입니다.
var mySecondHero = Heroes(rawValue: "블랙위도우")
print("제가 두번째로 좋아하는 히어로는 \(mySecondHero!.rawValue) 입니다.")
열거형 내의 항목이 자신과 연관된 값을 가질 수 있습니다. 연관 값은 각 항목 옆에 소괄호로 묶어서 표현할 수 있습니다.
enum MainDish {
case pasta(taste: String)
case pizza(dough: String, topping: String)
case chicken(withSauce: Bool)
case rice
}
var dinner: MainDish = MainDish.pasta(taste: "크림")
dinner = .pizza(dough: "치즈크러스트", topping: "불고기")
dinner = .chicken(withSauce: true)
dinner = .rice
열거형 응용
enum PastaTaste {
case cream, tomato
}
enum PizzaDough {
case cheeseCrust, thin, original
}
enum PizzaTopping {
case pepperoni, cheese, bacon, tomato
}
enum MainDish {
case pasta(taste: PastaTaste)
case pizza(dough: PizzaDough, topping: PizzaTopping)
case chicken(withSource: Bool)
case rice
}
var dinner: MainDish = .pizza(dough: .cheeseCrust, topping: .bacon)
반응형
'Mobile > Swift' 카테고리의 다른 글
[Swift - 문법] 반복문(for-in, while) (0) | 2022.11.09 |
---|---|
[Swift - 문법] 조건문 (if , switch) (0) | 2022.11.09 |
[Swift - 문법] 삼항 조건 연산자와 범위 연산자 (0) | 2022.11.09 |
[Swift - 문법] 튜플과 배열 (0) | 2022.11.03 |
[Swift - 문법] 변수와 상수 (0) | 2022.11.03 |