Swift Enum

  • 이번 글에서는 Swift 언어에서의 enum에 대해 알아보도록 하겠다.

열거형 enum

  • 열거형이란 그룹에 대한 연관된 값을 정의하고 사용하는 것이 가능한 타입을 말한다.
  • 단, 스위프트에서의 열거형 enum은 항목 그 자체가 고유의 값으로,
  • 해당 항목에 값을 매칭 시킬 필요가 없다.
  • 열거형 enum에는 원시값(rawValue)이라는 형태로 실제값을 부여할수도 있다.

열거형 문법

enum <열거형 이름> {
    case <열거 항목1>
    case <열거 항목2>
    case <열거 항목3>
}
  • 즉, 다음과 같이 사용할 수 있는 것이다.
enum CompassPoint {
    case north
    case south
    case east
    case west
}
    
var directionToHead = CompassPoint.west

열거형의 Switch문 사용

  • 다음과 같이 열거형을 switch문을 활용해 사용할수 있다.
  • 많은 경우, 열거형은 switch문과 함께 사용된다.
switch directionToHead {
case .north:
    print("Lots of planets have a north")
case .south:
    print("Watch out for penguins")
case .east:
    print("Where the sun rises")
case .west:
    print("Where the skies are blue")
}

Associated Values

  • 열거형에는 다음과 같이 값을 지정하고 지정한 값을 불러올수도 있다.
enum Barcode {
    case upc(Int, Int, Int, Int)
    case qrCode(String)
}
    
// 연관 열거형 값 지정
var productBarcode:Barcode = Barcode.upc(8, 85909, 51226, 3)
productBarcode = .qrCode("ABCDEFGHIJKLMNOP")
    
// 연관 열거형 값 불러오기
switch productBarcode {
	case .upc(let numberSystem, let manufacturer, let product, let check):
	    print("UPC: \(numberSystem), \(manufacturer), \(product), \(check).)
	case .qrCode(let productCode):
	    print("QR code: \(productCode).")
}

열거형의 원시값(Raw Values)

  • 다음과 같이 열거형에 원시값을 지정해줄수도 있다.
enum ASCIIControlCharacter: Character {
    case tab = "\t"
    case lineFeed = "\n"
    case carriageReturn = "\r"
}
    
//Index 1씩 증가
enum Planet: Int {
    case mercury=1, venus, earth, mars, jupiter, saturn, uranus, neptune
}
    
//String은 기본 항목이 String으로 지정
enum CompassPoint: String {
    case north, south, east, west
}