티스토리 뷰

Enum의 case들로 for 문을 돌려보자

간혹 enum에 있는 각 case들을 이용해 for문을 돌리며 각 case 별로 무언가 작업을 진행하거나 확인, 테스트를 해보고 싶은 경우가 있다. 하지만 Swift에서 enum은 sequence type이 아니라 for문을 돌리며 진행할 수가 없는데 이를 극복하는 많은 방법이 있겠지만, 그 중에서 약간의 번거로움이 있기는 하지만 가장 단순하고 쉬운 방법을 하나 소개해보고자 한다.

Swift에서 enum type의 선언은 일반적으로 아래와 같다.

enum SmallLetters {
    case a
    case b
    case c
}

이 enum type을 for문을 사용해 각 case들을 대문자로 치환해 보고 싶다. 하지만 sequence type이 아니기 때문에 원하는 기능을 할 수 없는데 enum 내부에 Array를 하나 선언해주어 이를 통해 enum으로 for문을 돌릴 수 있게 된다.

enum SmallLetters {
    case a
    case b
    case c

    static let order = [a, b, c]
}


enum type 내부에 static array를 위와 같이 선언해주면 끝이다. 이게 정말 편한 이유 중 하나는 만약 enum의 case들이 Int가 아니라 String 타입이고 각 case마다 각각의 값이 다르면 외부에서는 다소 불편해지는 문제가 있을 수 있는데 enum type 내부에 array를 선언해두면 각 인자를 enum case 그대로 사용해 별도의 치환이 따로 필요 없다는 장점이 있다.

이제 아래의 코드를 통해 선언한 enum type을 for문으로 돌릴 수 있게 된다.

for alphabet in SmallLetters.order {
    ...
    ...
}

어떻게 보면 외부에 static array를 선언하는 것과 별반 다를바가 없긴 하지만 enum 내부에 명시를 해주고 있기 때문에 가독성 적인 측면이나 유지보수 측면에서 외부 선언 보다는 분명 더 관리가 편하다.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday