ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Swift :: Enum 알아보기 (기초편)
    Swift 2019. 2. 4. 17:36


    안녕하세요! 상어입니다.

    항상 블로그를 해봐야지 해봐야지 하다가 드디어!! 마음을 먹게 되었네욤


    저의 첫 주제는 enum입니다.

    왜 enum이냐,, 문서나 주위에서 보면 enum을 너무 잘 활용하는데 저만 못하는 것 같고ㅠ

    그래서 이참에 블로그로 뙇! 정리해봤습니닿ㅎㅎㅎ



    Enum

    enum은 'Emumerations'의 줄임말로써 번역하자면 열거형 입니다.

    이름에서 부터 알려주듯이 값을 요케저케 열거해가지구 내가 원하는 값을 뾰로록 뽑아낼 수 있게 해주는 간편한 아이지용 :)


    그런데 enum이 다른언어의 enum과 좀 다르다고 하여 특징을 정리해봤습니다.


    특징

    • enum은 타입이기 때문에 대문자로 시작으로 이름을 설정합니다
    • 각 case는 고유 값이며, 소문자로 정의합니다.
    • 한줄에 '콤마'를 사용하여 여러개를 정의할 수 있습니다.
    • 데이터 타입을 설정할 수 있습니다.


    음음 좋아요 좋아, 그럼 이제 enum을 왜! 어디에! 쓰냐

    enum의 사용이유는 '값을 명확하게 함으로써 사이드 이펙트를 줄일 수 있고', '코드의 정확성을 높인다' 인것 같아요.

    그래서 저는 model을 enum으로 많이 활용한답니다 XD


    enum에 대해서 간단히 알고나면 사용방법은 간단합니다.


    enum Animal {
        case dog
        case cat
        case rabbit
        case etc
    }
    
    let animal = Animal.cat // 초기값 설정
    
    switch animal{
    case .dog:
        print("개 입니다.")
    case .cat:
        print("고양이 입니다.")
    case .rabbit:
        print("토끼 입니다.")
    case .etc:
        print("그 외 입니다.")
    }

    Animal 이라는 enum을 만들고 생성하고 싶은 동물들을 case에 추가했습니다. 

    그 후 enum을 빠져나와 변수 animal에 초기값을 설정한 후 switch를 이용하여 각 case에 해주고 싶은 일을 하면 됩니다! (초기값을 설정해주지 않으면 switch에서 사용할 수 없습니다.) 


    어떄용? 간단하쥬? 

    그러나 막상 사용하려면 잘 모르겠다는 점.. 흑흑


    추가로 위의 예제는 여러가지 방법으로 다양하게 코드를 짤 수 있는데, 


    enum Animal: String { // ^^^^^^ 각 case(raw value)의 타입 case dog = "개 입니다." case cat = "고양이 입니다." case rabbit = "토끼 입니다." case koala case etc = "그 외 입니다." } print(Animal.dog.rawValue) // 개 입니다. print(Animal.koala.rawValue) // koala


    그 중 하나는 데이터 타입을 enum에 지정할 수 있습니다.

    위 예제는 데이터 타입을 String으로 지정한 후 각 case에 나타낼 문자열을 입력했습니다.

    그리고 각 case.rawValue를 하면 지정한 문자열을 가져올 수 있습니다.

    만약, koala처럼 따로 입력을 하지 않는다면 'koala'로 rawValue가 설정됩니다.


    enum Animal { case dog case cat case rabbit case etc func printAnimal() { switch self { case .dog: print("개 입니다.") case .cat: print("고양이 입니다.") case .rabbit: print("토끼 입니다.") default: print("그 외 입니다.") } } } Animal.etc.printAnimal() // 그 외 입니다.

    또 다른 하나는 enum안에 메소드를 생성할 수 있습니다. 

    위 예제는 첫번째 예제에 있는 enum밖의 switch기능을 enum안에 메소드로 만든 것입니다. 

    class에서 사용한던 것처럼 자유롭게 메소드를 생성할 수 있으니, 어떻게 써야할지 고민할 필요는 없을 것 같아욯ㅎㅎ



    처음에 enum을 어떻게 사용하는지에 대해 정리를 해보았는데 막상 말로 설명하려니 정말 어렵네요 헤헿

    혹시 수정할 내용이나, 이해가 잘 안되는 내용이 있다면 주저말고 댓글로 꼭꼭 알려주세요!!!><


    안뇽!

    댓글

Designed by Tistory.