오늘은 CaseIterable 이라는 것을 사용해보겠습니다. 공식문서를 살펴볼까용가리치킨
영어는 언제봐도 답답한 느낌이 마음 속 깊은 곳부터 스멀스멀 올라오지만.. 그래도 공식 문서는 읽어봐야지
미숙한 영어실력으로도 저희에겐 파파고가 있으니 열심히 해석해봅시다.
먼저 사진 가장 위쪽을 보니 Protocol 이라고 쓰여있네요. 그리고 그 아래 CaseIterable 에 대한 설명이 나와있어요.
CaseIterable 은 모든 값의 컬렉션을 제공하는 타입입니다. 라고 쓰여있네요. 한국말이지만 이해가 안가는~~~🤍
이 CaseIterable Protocol 을 채택하면 해당 프로토콜을 채택한 것이 가진 값들을 배열과 같이 순회할 수 있게 해준다고 생각하면 더 이해하기 쉬울 거 같아요.
계속해서 쭉 읽어봅시다. 이 CaseIterable Protocol을 채택하기에 부합한 타입은 일반적으로 열거형이래요.
그것도 associated values 즉, 연관 값이 없는 열거형이 CaseIterable 을 채택하기에 부합한 타입이라고 쓰여있네요.
CaseIterable Protocol 을 채택한 타입을 사용할 때, allCases 라는 프로퍼티를 사용해서 열거형 타입의 모든 case 컬렉션에 접근할 수 있대요.
정리해보면, 연관 값이 없는 열거형에서 보통 CaseIterable 을 채택해서 사용할 수 있고, 열거형의 case들의 컬렉션에 접근하기 위해서는 allCases 라는 프로퍼티를 통해서 접근할 수 있다. 라고 이해하면 될 거 같아요.
계속해서 아래 나온 예시도 읽어봅시다. 아래 작성된 CompassDirection 이라는 열거형은 CaseIterable Protocol을 준수합니다. 우리는 CompassDirection.allCases 라는 구문을 통해서 해당 열거형의 Case 자체 또는 Case 개수에 접근할 수 있다고 하네요.