Post

enum

enum

관련된 값들을 한 그룹으로 묶어서 표현하는 타입이다.

1
2
3
4
5
6
7
8
9
enum Direction {
	case north
	case south
	case east
	case west
}

var currentDirection = Directino.north
currentDirection = .east

Switch문과 함께 사용

1
2
3
4
5
6
7
8
9
10
switch currentDirection {
case .north:
print("북쪽으로 이동")
case .south:
    print("남쪽으로 이동")
case .east:
    print("동쪽으로 이동")
case .west:
    print("서쪽으로 이동")
}

원시 값

  • enum에 각 case에 특정 값을 할당 가능
  • 특정 타입을 가질 수 있음.
1
2
3
4
5
6
7
enum Rank: Int {
	case bronze = 1
	case silver = 2
	case gold = 1
}

print(Rank.silver.rawValue) // 2 출력

연관 값(associated value)

  • 각 case가 추가적으로 값을 가질 수 있음.
1
2
3
4
5
6
7
8
9
10
11
12
13
enum Response {
	case success(message: String)
	case failure(errCode: Int)
}

let response = Response.success(message: "성공")

switch response {
	case .success(let message):
		print(message)	
	case .failure(let err):
		print(err)
}

메서드 추가하기

  • 메서드를 추가해서 더 확장하여 사용가능.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
enum Beverage {
    case coffee, tea, juice

    func description() -> String {
        switch self {
        case .coffee:
            return "커피"
        case .tea:
            return "차"
        case .juice:
            return "주스"
        }
    }
}

let drink = Beverage.tea
print(drink.description()) // "차"

This post is licensed under CC BY 4.0 by the author.