-
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을 어떻게 사용하는지에 대해 정리를 해보았는데 막상 말로 설명하려니 정말 어렵네요 헤헿
혹시 수정할 내용이나, 이해가 잘 안되는 내용이 있다면 주저말고 댓글로 꼭꼭 알려주세요!!!><
안뇽!
'Swift' 카테고리의 다른 글
Swift :: delegate패턴 알아보기 (3) 2019.03.18 Swift :: Codable 알아보기 (1) 2019.02.14 Swift :: 고차함수 -Map, Filter, Reduce 알아보기 (0) 2019.02.07 Swift :: 구조체와 클래스 차이 (struct VS class) (0) 2019.02.05 Swift :: Enum 알아보기 (응용편) (2) 2019.02.04 댓글
- enum은 타입이기 때문에 대문자로 시작으로 이름을 설정합니다