본문 바로가기
Swift

열거형에 관하여 2

by iOS 개린이 2023. 2. 17.

열거형의 연관값(Associated Values)

 

-열거형의 각 항목들은 연관값이라는 것을 가질 수  있다.

-연관값은 각 항목 옆에 소괄호를 통해 표현할 수 있고, 일부 항목들이 연관값을 가졌다고 모든 항목이 연관값을 가질 필요는 없다.

 

ex) 연관값

 

 

각 항목 옆에 튜플을 통해 내가원하는 연관값을 받을 수 있게 선언할 수 있다.

연관값을 사용하고 싶을 때는  . 을 이용해서 이니셜라이저안에 값을 넣어 사용할 수 있다.

 

 

 

열거형의 항목순회

-열거형에 포함된 모든 항목들을 알고 싶을 때, CaseIterable 프로토콜을 사용할 수 있다.

-CaseIterable을 채택하면 allCases라는 타입 프로퍼티를 통해 모든 항목의 컬렉션을 생성할 수 있다.

 

ex)

 

: 콜론을 통해 CaseIterable 프로토콜 채택.

만약 원시값이 있는 열거형이라면 타입을 먼저 선언하고 , 콤마 후 프로토콜을 채택해주면 된다.

 

CaseIterable 프로토콜을 채택하면 다음과 같이 allCases 프로퍼티를 사용할 수 있다.

 

 

 

순환 열거형

-열거형 항목의 연관값이 열거형 자신의 값이고자 할 때 사용한다.

-순환 열거형을 명시하고 싶으면 indirect 키워드를 사용하면 된다.

 

 

 

요렇게 원하는 항목에 indirect 키워드를 사용해주면 된다.

 

 

그럼 이렇게 School 열거형안에 있는 값을 사용할 수 있다.

 

 

만약 열거형 전체에 indirect를 적용하고 싶다면?

 

 

이렇게 열거형 선언할 때, 키워드 붙여주면 된다.

indirect는 이진 탐색 트리 등의 순환 알고리즘을 구현할 때 유용하게 사용할 수 있다고 한다.

 

 

 

 

 

Reference :

야곰 swift 프로그래밍 3판

https://babbab2.tistory.com/117

 

 

'Swift' 카테고리의 다른 글

Closer에 관하여  (0) 2023.03.01
연산자 정리  (0) 2023.02.28
열거형에 관하여  (0) 2023.02.15
함수와 메소드의 차이  (0) 2023.02.06
Static과 Class에 관하여  (0) 2023.01.31