728x90
안녕하세요:)
오늘은 Enumeration에 대해서 알아보도록 하겠습니다.
1. Enumeration
- 열거형이란 하나의 주제로 연관된 데이터들이 멤버로 구성되어 있는 자료형 객체를 의미합니다.
- 열거형에 포함된 상수들은 상수라고 부르지 않고 Enumeration Case라고 부릅니다. 짧게 case라고 합니다.
- 열거형은 독립적인 자료형입니다.
- 열거형에 포함되어 있는 Case도 독립적인 이름을 가지고 있습니다.
- 열거형을 사용하면 코드의 가독성과 안전성이 높아집니다.
- 변수나 상수에 enum의 타입을 명시해주면 형식추론이 가능해집니다.
- 열거형은 보통 switch문과 함께 사용됩니다.
enum TypeName { // 문법: 열거형은 독립적인 형식, UppercamelCase
case caseName
case caseName, caseName
}
enum Alignment {
case left
case center
case right
}
Alignment.left
Alignment.center
Alignment.right
var textAlignment = Alignment.center
textAlignment = .left
textAlignment = .justify // 케이스에 선언하지 않을 걸 저장하면 에러가 발생합니다.
enum Direction {
case north
case south
case east
case west
}
Direction.north
let directionToHead: Direction = .east
switch directionToHead {
case .north:
print("북쪽 입니다.")
case .south:
print("남쪽 입니다.")
case .east:
print("동쪽 입니다.")
case .west:
print("서쪽 입니다.")
} // 모든 경우의 수를 처리해주었기 때문에 default를 생략했습니다.
2. Raw Value
- 열거형 항목에 값을 추가할 수 있습니다.
- Int, Double, String을 추가할 수 있고, 거의 Int만 사용됩니다.
- 열거형 객체에 타입 어노테이션으로 타입을 추가하고, 첫 번째 멤버에 시작할 값을 지정하면 됩니다.
- 선언 시점에 선언한 원시값은 나중에 다른 값으로 바꿀 수 없습니다.
- 필수적이지 않고, 선택적으로 사용하면 됩니다.
enum TypeName: RawValueType {
case caseName = Value
case caseName, caseName
}
enum Alignment: Int {
case left
case right = 100
case center
} // 원시값의 자료형이 Int로 선언된다.
// 원시값에 접근
Alignment.left.rawValue // 0
Alignment.right.rawValue // 100
Alignment.center.rawValue // 101
Alignment(rawValue: 0) // 파라미터로 rawValue를 전달하면 동일한 rawValue를 가진 case가 생성됩니다.
Alignment(rawValue: 200) // 이 값을 가진 케이스는 없으니까 nil이 리턴된다.
enum Weekday: String {
case sunday
case monday = "MON"
case tuesday
case wednesday
case thursday
case friday
case saturday
}
Weekday.sunday.rawValue // sunday원시값의 자료형을 문자열로 선언하고 원시값을 생략하면 케이스 이름과 동일한 원시값이 저장됩니다.
Weekday.monday.rawValue // MON
728x90
'Swift' 카테고리의 다른 글
Property - 1 (0) | 2020.11.24 |
---|---|
Structure and Class (0) | 2020.11.22 |
Dictionary (0) | 2020.11.20 |
Array (0) | 2020.11.19 |
String Compare, Search, Option (0) | 2020.11.19 |