개발하는 동글 :]

[TIL],[Swift],[Enum],[열거형] 본문

카테고리 없음

[TIL],[Swift],[Enum],[열거형]

동글하다 2023. 7. 27. 09:26

Enum(열거형)이란?

  1. 관련된 값으로 이루어진 그룹을 공통의 type(형)을 선언해 type-safety를 보장하는 방법으로 코드를 다룰 수 있게 해준다.
  2. C나 Objective-C가 Integer(정수형)값들로 열거형을 구성한 것에 반해 Swift에서는 case값이 string, character, integer, floting 값들을 사용할 수 있다.
  3. 열거형은 1급 타입(first-class types)*이어서 계산된 프로퍼티(computed properties)를 제공하거나 초기화를 지정하거나, 초기 선언을 확장해 사용할 수 있다.

열거형 문법 (Enumeration Syntax)

다음은 네 가지 방향을 갖는 CompassPoint 열거형 선언의 예시

case를 콤마로 구분해서 한줄에 적을 수 있다.

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

각 열거형 정의는 완전 새로운 형을 정의한다. Swift의 다른 형과 마찬가지로 형의 이름은 대문자로 시작해야 한다.

var directionToHead = CompassPoint.west

directionToHead의 형은 초기화 될 때 타입추론이 돼서 CompassPoint형을 갖게된다.

directionToHead의 형이 CompassPoint로 한번 정의되면 다음에 값을 할당할 때 축약형 문법을 사용할 수 있다.

directionToHead = .east

Raw 값 (Raw Values)

C와 Objective-C 같이 case에 raw 값을 지정할 수 있다.
enum ASCIIControlCharacter: Character {
    case tab = "\t"
    case lineFeed = "\n"
    case carriageReturn = "\r"
}
위 예제에서는 Character형의 raw값으로 정의했지만, String, Character, Integer,Float등의 형을 사용할 수도 있다. 단, 각 raw값은 열거형 선언에서 유일한 값으로 중복되어서는 안된다.

암시적으로 할당된 Raw 값 (Implicitly Assigned Raw Values)

열거형을 다루면서 raw값으로 Integer나 String 값을 사용할 수 있는데, 각 case별로 명시적으로 raw값을 할당할 필요는 없다. 만약 raw값을 할당하지 않으면 Swift에서 자동으로 값을 할당해 준다.
enum Planet: Int {

case mercury = 1, venus, earth, mars, jupiter, saturn, uranus, neptune

}

 

공부가 필요한 키워드 *

  • 1급 타입(first-class types) :