티스토리 뷰

Swift

Swift) Enum 열거형

Ekko0701 2023. 1. 2. 20:19

https://zeddios.tistory.com/12

https://ujeon.medium.com/swift-enums-f75124db5271

https://jusung.gitbook.io/the-swift-language-guide/language-guide/08-enumerations


Enum (열거형)은 관련된 값으로 이루어진 그룹을 공통의 형(type)으로 선언해 안정성을 보장하는 방법으로 코드를 다룰 수 있게 해 준다. 다시 말해 유사한 종류의 여러 값들을 유의미한 이름으로 한 곳에 모아 정의한 것이다. 열거형 자체가 하나의 데이터 타입이다. 또한 다른 언어의 열거형과는 많이 다르고 상속이 불가능하다는 특징이 있다.

 

직접 사용 해보면서 알아보자.

 

열거형은 enum 키워드로 생성이 가능하고 타입이기 때문에 대문자로 시작해야 한다. 그리고 각 case에 값들을 입력해 준다. 한 줄에 여러 값을 입력해도 된다.

 

다음과 같이 사용한다. 

이미 말했듯이 열거형은 데이터  타입으로 변수를 선언할 때 변수에 타입을 알려줄 수 있다.

 

그리고 enum은 switch문에 자주 사용되는데 변수에 들어올 값을 미리 정의해뒀기 때문이다.

 

관련값( Associated Values )

열거형의 각 case에 custom type의 추가적인 정보를 저장할 수 있다.

그 값들은 switch case 문이나 if문에서 사용이 가능하다. 

 

원시값 ( Raw Values )

case에 raw 값 ( = 원시값)을 지정할 수도 있다.

위의 예제를 보면 sunny에만 원시값 1을 주었는데 만약 원시값을 할당하지 않으면 Swift에서 자동으로 값을 할당해 준다.

cloudy는 암시적으로 2 그리고 rainy는 3이 할당된다.

 

또한 원시값은 String, Character, Float, Double 등의 타입도 가능하다. 단, 원시값은 유일한 값으로 중복되어서는 안 된다.

 

Double 형으로도 함 해보자.

에러가 발생하는데 원시값이 정수값이 아니라면 정의하라고 한다.

 

이렇게 하면 또 잘 나온다. 참고하자.

Double형도 그렇고 만약 Character Type을 원시값으로 사용하면 원시값을 자동으로 할당해주지 않기 때문에 모든 case에 원시값을 할당해줘야 한다.

 

이번엔 원시값을 String으로 해보자.

보이는 것과 같이 String을 원시값으로 사용하면 case 텍스트가 원시값으로 자동으로 할당된다.

 

원시값을 사용해서 열거형 변수를 초기화할 수도 있다.

nowDirection은 원시값이 "west"인 값인 west가 된다.

단, rawValue가 없는 값이 있을 수 있으므로 Optional 타입으로 반환된다. 

 

추가로 관련값(Associated value)과 원시값(raw value)을 함께 사용할 수는 없다.

 

열거형에 메서드를 추가할 수도 있다.

 

마지막으로 프로토콜도 채택할 수 있다.

 

지금까지 enum에 대해 알아보았다.

'Swift' 카테고리의 다른 글

Swift) Struct & Class  (0) 2023.01.02
[Swift] Dictionary  (0) 2022.08.05
[Swift] 기초 문법 1 - 입력, 분할, 배열, map(), filter(), reduce()  (0) 2022.07.28
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
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
글 보관함