열거형 (Enumerations) - 열거형 구문 (Enumeration Syntax)

00yhsp·2024년 4월 9일

리스트의 가능한 값으로 정의한 사용자 정의 타입을 모델링한다.

열거형 (enumeration) 은 관련된 값의 그룹을 위한 일반 타입을 정의하고 코드에서 타입-세이프 방법으로 값을 동작하게 한다.

C에 익숙하다면 C 열거형은 정수값을 설정하기 위해 연관된 이름을 할당하는 것을 알고 있을 것이다. Swift에서의 열거형은 훨씬 유연하고 열거형의 각 케이스에 값을 제공하지 않아도 된다. 값 (원시값)이 각 열거형 케이스로 제공된다면 그 값은 문자열, 문자 또는 정수 또는 부동 소수 타입일 수 있다.

또한, 열거형 케이스는 각 다른 케이스 값으로 저장될 모든 타입의 관련된 값을 지정할 수 있다. 하나의 열거형의 일부로 관련된 케이스의 공통 세트를 정의할 수 있으며 각각은 연관된 적절한 타입의 다른 값 세트를 가지고 있다.

Swift의 열거형은 그 자체로 1급 타입이다. 열거형의 현재값에 대한 추가 정보를 제공하는 계산된 프로퍼티와 열거형이 나타내는 값과 관련된 기능을 제공하는 인스턴스 메서드와 같이 전통적으로 클래스에서만 지원되는 많은 기능을 채택한다. 열거형은 케이스 초기값을 제공하기 위해 초기화를 정의할 수도 있다. 열거형은 기존 구현을 넘어 기능적으로 확장될 수도 있고 표준 기능을 제공하기 위해 프로토콜을 준수할 수 있다.

열거형 구문 (Enumeration Syntax)

열거형은 enum 키워드와 중괄호 안에 모든 정의를 위치시켜 나타낸다.

enum SomeEnumeration {
	// enumeration definition goes here
}

다음 예제는 나침반의 4개 주요 포인트를 나타낸다.

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

열거형 안에 정의된 값 (north, south, east, west)은 열거형 케이스 (enumeration cases)이다.
새로운 열거형 케이스를 나타내기 위해 case 키워드를 사용한다.

Note:
Swift 열거형 케이스는 C와 Objective-C 처럼 기본적으로 정수값을 설정하지 않는다. 위 예제 CompassPoint 에 north, south, east, west 는 0, 1, 2, 3 과 같지 않습니다. 대신 다른 열거형 케이스는 CompassPoint 의 명시적으로 정의된 타입으로 자체 값이다.

여러개의 케이스는 콤마로 구분하여 한줄로 표기할 수 있다:

enum Planet {
    case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}

각 열거형 정의는 새로운 타입으로 정의한다. Swift의 다른 타입처럼 대문자로 시작하는 그들의 이름 (CompassPoint 와 Planet)이 타입이다. 열거형 타입을 복수 이름이 아닌 단수 이름으로 지정하면 읽기 쉽다:

var directionToHead = CompassPoint.west

directionToHead 타입은 CompassPoint 의 가능한 값 중 하나로 초기화 될 때 유추된다. directionToHead 는 CompassPoint 로 선언되고 더 짧게 점 구문을 사용하여 다른 CompassPoint 값을 설정할 수 있다:

directionToHead = .east

directionToHead 의 타입은 이미 알고 있으므로 값을 설정할 때 타입을 삭제할 수 있다. 따라서 명시적으로 타입화 된 열거형 값으로 작업할 때 코드를 쉽게 읽을 수 있다.

profile
iOS Dev

0개의 댓글