Swift

Swift :: Enum 알아보기 (기초편)

상어(shark) 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을 어떻게 사용하는지에 대해 정리를 해보았는데 막상 말로 설명하려니 정말 어렵네요 헤헿

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


안뇽!