안녕하세요 알통몬입니다. 공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 enum 열거형에 대해 공부하겠습니다.
enum 이름 {
case name1
case name2
case name3, name4
}
enum 은 타입이기 때문에 첫 글자를 대문자로 선언해주어야 하고
각 case 들은 소문자로 정의합니다.
위처럼 case를 하나 씩 선언하거나 콤마로 구분하여 여러 개를 선언할 수 있고,
각 case는 그 자체가 고유 값입니다.
그리고 C나 java 처럼 각 값에 정수가 대입되지 않습니다.
ex)
enum Seasons {
case spring
case summer
case fall
case winter
}
var season : Seasons = Seasons.spring
위에서 season의 타입이 Seasons로 정의되어 있기 때문에
아래처럼 사용할 수도 있습니다.
season = .summer
그리고 열거형은 switch 문에서도 자주 사용되는데요.
모든 값들이 case 안에 들어가야 합니다.
그렇지 않다면, 가장 마지막에 default 를 정의해야 합니다.
switch season {
case .spring :
print("봄이네요")
case .summer :
print("여름이네요")
case .fall :
print("가을이네요")
case .winter :
print("겨울이네요")
}
C 나 Java 처럼 case 별로 정수 값을 가질 수도 있는데요.
원시값이라는 것을 사용하는 방법입니다.
enum Seasons : Int {
case spring = 0
case summer = 1
case fall
case winter
}
첫 번째 case 에만 0을 대입시켜주면 그 다음부터는 1씩 증가하며 정수값을 가집니다.
그리고 각 원시값을 가져오고 싶을 때는 아래처럼 사용가능합니다. => rawValue 사용
Seasons.spring.rawValue // 0
enum Seasons : String {
case spring = "봄"
case summer = "여름"
case fall = "가을"
case winter
}
Seasons.spring.rawValue // 봄
문자열이 원시 값으로 대입되었을 경우에는
각 case 마다 원시 값을 주어야 합니다.
그렇지 않으면 case의 값들을 가져옵니다.
Seasons.winter.rawValue // winter
그리고 원시 값을 통한 초기화도 할 수 있는데요.
rawValue를 통해 초기화할 수 있습니다.
* rawValue 를 통해 초기화를 한 인스턴스는 옵셔널 타입입니다.
let season : Seasons = Seasons(rawValue : 0) // X
let season : Seasons? = Seasons(rawValue : 0) // spring
메소드 추가도 가능합니다.
enum Dozen {
case one
case two
case three
case four
case five
case six
case seven, eight, nine, ten, eleven, twelve
func overTen() {
switch self {
case one, two, three, four, five, six, seven, eight, nine, ten :
print("10 이하입니다")
case eleven, twelve :
print("10초과입니다")
}
}
Dozen.ten.overTen() // 10 이하입니다
이상입니다.
다음 포스팅에서는 값 타입과 참조 타입에 대해 공부하겠습니다.
'Swift3(스위프트3)' 카테고리의 다른 글
swift3 스위프트3 클로저 closure (0) | 2017.07.05 |
---|---|
swift3 스위프트3 값 타입과 참조 타입 - Value Type VS Reference Type (0) | 2017.07.05 |
swift3 스위프트3 구조체(struct)와 클래스(class) (0) | 2017.07.04 |
swift3 스위프트3 Optional 옵셔널이란? (0) | 2017.07.04 |
swift3 스위프트3 조건문(if... else... else if, switch)과 반복문 (for ... in, while, repeat... while) (0) | 2017.07.04 |