Associated Values
enum은 rawValue로 값을 지정할 수 있지만, 한 번 지정된 값을 바꿀 수는 없다. case를 나누고 난 뒤에 하나의 case에 대해 또 다시 여러 case를 확인해야 하는 경우(하나의 case에서 여러 값을 저장해서 확인하고 싶은 경우)에는 Associated Values(연관값)을 사용해 볼 수 있다.
대충 예를 들어보면.. 카페의 메뉴를 관리하는 CafeMenu enum이 있다고 가정하자. 카페는 커피와 버블티를 팔고, 커피는 샷을 얼마나 넣을 건지를 확인, 버블티는 얼음양, 당도, 타피오카 펄의 양을 확인할 수 있다고 생각해본다. 코드로는 아래와 같이 나타낼 수 있다.
case인데 괄호가 나타나다니.. 처음에 진짜 이게 뭔가 싶었다. 요 괄호 안에 들어가는 값이 assosiated value이다. 이 값들은 enum 변수를 생성할 때 함께 저장되고 나중에 사용할 수 있다. 손님이 와서 주문을 하면 (Order 객체라고 상상하고) 주문서 안에는 CafeMenu 값이 들어있을 것이다. CafeMenu가 초기화 된 이후에 저 연관 값을 사용하기 위해서는 switch문이나 if-case를 사용하게 된다.
case 안에서도 여러가지 조건을 확인해야 하는 경우, 원시값 하나가 아니라 여러 값을 저장해야 하는 경우에 assosiated value를 활용하면 좋을 것 같다.
반응형
'Swift' 카테고리의 다른 글
[iOS] Swift initialization 알아보기 (4) - Failable Init (0) | 2021.09.24 |
---|---|
[iOS] Swift initialization 알아보기 (3) - Designated Init, Convenience Init (0) | 2021.09.17 |
[iOS] Swift initialization 알아보기 (2) - 기본 생성자 (0) | 2021.09.17 |
[iOS] Swift initialization 알아보기 (1) - init 기초 (0) | 2021.09.15 |
[iOS] Swift Enum (열거형) (0) | 2021.09.10 |