열거형

열거형은 연관성 있는 항목들을 묶어놓은 것으로, enum 키워드를 통해 정의할 수 있으며 그 내부에서는 case 키워드로써 항목 분류를 할 수 있다. 만약 어떤 변수에 열거형으로 정의하는 항목을 대입하면, 그 다음부터는 해당 변수에 . 만 작성하여도 열거형을 알아서 추론해준다.

enum 자동추론

enum CompassPoint {
	case north, south
	case east
	case west
}

var direction = CompassPoint.east
// east

direction = .west
// west

enum과 switch문

열거형은 switch 구문과 함께 사용하면 효과적이다.

enum CompassPoint {
	case north, south, east, west
}

var direction = CompassPoint.north
// north

switch direction {
	case .north:
		print("north")
	case .south:
		print("south")
	case .east:
		print("east")
	case .west:
		print("west")
}
// "north"

enum과 원시값

열거형 항목에 원시값을 맵핑하기 위해서는 타입을 명시하면 된다.

enum CompassPoint: String {
	case north = "북"
	case south = "남"
	case east = "동"
	case west = "서"
}

var direction = east
// east

switch direction {
	case .north:
		print(direction.rawValue)
	case .south:
		print(direction.rawValue)
	case .east:
		print(direction.rawValue)
	case .west
		print(direction.rawValue)
}
// "동"

enum과 연관값 추출

enum을 자동추론시킬 수도 있지만, 그 반대로 연관값을 추론할 수도 있다.

let direction2 = CompassPoint(rawValue: "남")
// south

enum PhoneError {
	case unknown
	case batteryLow(String)
}

let error = PhoneError.batteryLow("배터리가 곧 방전됩니다")
// batteryLow("배터리가 곧 방전됩니다")

switch error {
	case .batteryLow(let message):
		print(message)
	case .unknown:
		print("알 수 없는 에러입니다")
}
// "배터리가 곧 방전됩니다"
profile
전직 시스템엔지니어, 현직 데이터엔지니어, 하지만 하고 싶은건 iOS 개발

0개의 댓글