티스토리 뷰

반응형

안녕하세요 도미닉입니다.

 

오늘은 렛츠스위프트 뉴스레터 17호에서 소개된 Enum 열거 타입을 사용하는 3가지 방법 글을 번역해서 공유하고자 합니다.

 

글쓴이의 허락을 받았습니다.

 

재미있게 보시고 enum 을 더 많이 잘 사용하는 날까지 열심히 같이 공부해봅시다.

번역

Swift에는 많은 데이터 구조가 있으며 정확히 사용하기 위해서는 각 필요한 상황을 이해해야합니다.

예를 들어, 우리는 독립적인 객체를 선언하기  위해 구조체를 사용하거나 일부 함수를 포함할 때 클로저를 사용합니다.

Swift 언어에는 또 하나의 흥미로운 데이터 구조 인 enum이 있습니다. 

그것이 정확히 무엇인지, 그리고 그것이 우리에게 어떤 기능을 제공하는지 알아봅시다.

 

Enumeration 은 무엇인가요?

 

Enum은 하나의 논리적 그룹에있는 한 유형의 관련 값 모임입니다.

이것은 네트워크 요청 결과, 사용자 유형 또는 다양한 데이터들을 포함합니다.

Swift의 구조체와 마찬가지로 열거 형은 다음과 같은 이점이 있는 value-type 입니다.

 

  • 스택에 저장됩니다.
  • 상속을 갖지 않습니다.
  • 기본적으로 초기화 함수가 제공됩니다.
  • 프로토콜을 채택할 수 있습니다.
  • extensions 을 가질 수 있습니다.
  • 메소드를 가질 수 있고 연산 프로퍼티를 가질 수 있습니다.
  • 제너릭과 함께 사용할 수 있습니다.

 

저장 프로퍼티는 가질 수 없지만 rawValue 를 case 별로 가질 수 있습니다.

 

데이터 모델로써의 열거형

점차적으로 기능을 추가하며 데이터 모델로서 사용하는 열거형의 몇 가지 사례를 보여드리겠습니다.

쓰레기의 종류을 설명한다고 가정해봅시다.

우리는 어떤 종류의 쓰레기가 재활용 가능한지 알고 있습니다.

이를 위해 Recyclable 프로토콜을 준수하도록 구성할 수 있습니다.

 

이제 우리는 한 가지 더 세부 사항을 추가해야합니다.
모든 폐기물 유형에는 자체 '오염 수치'가 있습니다. 

이는 그것이 우리 세상에 얼마나 큰 피해를 주는지를 나타내는 지표입니다.

우리는 rawValue 유형으로 이것을 추가할 수 있습니다.

 

 

- enum의 원시 값 유형이 Int, Double, String 또는 Character이거나 이러한 유형과 관련된 모든 유형이면 정의하고 사용하기 쉽습니다.

 

좋습니다. 하지만 상황이 더 복잡하고 PollutionIndicatorModel 을 선언했다고 가정해보겠습니다.

Enum 의 케이스와 모델을 연결하는 방법이 있을까요? 당연히 있습니다!

이를 위해 우리는 열거형을 RawRepresentable 프로토콜에 맞추고 일부 필드를 구현해야합니다.

 

 

이제 쓰레기가 어떻게 재활용되는지에 대한 정보가 있으므로 다른 경우의 인수를 추가해보겠습니다.

우리는 여러가지 방법을 가지고 있으며 모두 RecyclingMechanism 프로토콜을 준수하므로 인수유형을 정의하기 위해 generic 을 사용할 수 있습니다.

 

 

물론 이런 상황에서는 generic 보다는 프로토콜을 사용하는게 좋습니다.

하지만 generic injection 을 사용하면 다양한 유형의 재활용 방법에 대한 동작을 정의할 수 있습니다.

 

 

네임 스페이스로서의 열거형

 

논리적으로 분리해서 선언할 때 열거형은 강력하게 추천됩니다.

 

-열거형은 0개 혹은 더 많은 값을 가질 수 있습니다

 

이는 다른 데이터 구조 아래에 enum을 래퍼로 만들 수 있음을 의미합니다.

 

 

 

프로젝트 모듈에서 복잡한 데이터 흐름을 구조화하는 좋은 방법입니다.

 

-열거형 안에 프로토콜을 선언할 수는 없습니다.

 

 

재귀 알고리즘에서의 열거형

 

열거형을 사용하여 정의하는 것만으로 알고리즘을 재귀로 해결하는 흥미로운 방법을 끝으로 이 글을 마치고 싶습니다.

값 타입의 재귀라고 하면 이상하게 보입니다. 컴파일러에서 스택에 값 타입 모델의 크기를 정의하려면 크기를 알아야합니다.

이것이 값 타입에서 재귀를 사용할 수 없는 이유입니다.

 

 

간접 케이스는 값이 저장되는 힙 메모리에 대한 포인터로 처리되기 때문에 가능합니다.🤯

 

 

결론

 

물론 열거형을 사용하는 더 많은 방법이 있습니다.

더 자세히 알아보려면 Swift 언어에 대해 더 많이 찾을 수 있는 훌륭한 책 Advanced Swift 를 추천합니다.

읽어주셔서 감사합니다! 트위터에서 저를 팔로우하고 질문 작성해주시면 기꺼이 답변해 드리겠습니다.

 

 

정리

글 잘 보셨나요? 원본글 가서 좋아요도 눌러주시면 좋겠네요.

 

https://medium.com/swlh/three-ways-to-use-enums-in-swift-21c51517162e

 

Three Ways to Use Enums in Swift

In Swift there are a lot of data structures, and they all have their own context when it’s needed to use exactly them. For instance, we…

medium.com

이번에 렛어스고 2020 가을 에서 enum 에 대해 발표하게 되었습니다.

 

컨퍼런스에도 많은 관심 가져주세요.

 

감사합니다.

반응형

'IT > Swift' 카테고리의 다른 글

swift 접근제어자(Access Control)  (0) 2021.06.04
Swift 에서 클로저와 고차함수  (0) 2021.01.13
스위프트 열거형  (0) 2020.10.20
스위프트에서 포인터를 사용하는 방법 inout  (0) 2020.04.25
Swift 함수형 프로그래밍  (0) 2019.05.10
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함