이번에는 계속 그전에 기초 문법을 작성할 때에 계속해서 열거형 열거형 언급을 했었는데 제대로 작성을 하지 않았기 때문에 이번에는 열거형에 대해서 작성을 해보도록 하자.
열거형
- 연관성이 있는 값들을 모아 놓은 것
- 예를들어 프로그래밍 언어 ( C언어, 파이썬, java, c++ 등 )
- 열거형의 사용은 enum 사용
- C언어의 경우 값의 집합이지만 Swift에서는 값을 처음에 제공하지 않고 사용할 수 있다는 차이점이 있다.
- 초기 케이스 값을 제공하기 위해 initializer를 정의할 수도 있다.
- 표준 기능을 제공하기 위해 프로토콜을 준수할 수 있다.
대략적으로 열거형의 정의에 대해서 확인을 해보았다.
쉽게 연관이 있는 내용들의 값의 집합이라고 생각하면 편하게 이해를 할 수 있을 것 같다.
enum 사용 방법
enum 이름 { // cas 내용 } |
해당 내용으로 사용을 할 수 있다. 그럼 이제 코드를 통해서 내용을 확인해보도록 하자.
위의 이미지를 확인해보면 열거형 ComputerLanguage를 만들었고, 해당 열거형 안에는 c, java, python, html 이 있다.
열거형은 case를 계속 선언해서 사용해도 되고, 간략하게 , 를 사용하여 표현할 수도 있다.
열거형을 만들게 되면 새로운 하나의 타입처럼 사용할 수 있기 때문에 카멜 표기법 사용을 권장한다.
따라서 열거형의 이름의 시작을 대문자로 시작하였다.
열거형의 사용에 대해서 확인해봤다. 변수 language를 만들었고, 해당 language에는 ComputerLanguage의 열거형 java가 들어가있는 것을 확인할 수 있다.
그럼 이제 language의 값을 변경해보도록 하자.
기존에 language 변수의 값이 java 였지만, 해당 값을 변경하려고 할때에는 language = . 만 입력해도 알아서 서제스쳔 창이 표기가 된다.
이유는 컴파일러가 language 변수는 이미 ComputerLanguage 타입의 변수라는 것을 추측하여 알고 있기 때문이다.
따라서 앞의 내용을 작성하지 않아도 된다.
물론 우측의 이미지와 같이 작성을 해도 무방하긴 하다. 2가지로 활용을 할 수 있으니 참고하면 될 것 같다.
열거형은 switch 구문과 함께 사용하면 다양하게 활용이 가능하다.
이렇게 열거형의 language를 switch 구문과 같이 사용을 하였다.
해당 내용들의 값이 일치할 경우 각각의 문자열이 출력되도록 진행했고, 변수 language는 현재 값이 python 이기 때문에 출력으로 "Python"이 표기가 된것을 확인할 수 있다. 즉, switch 구문과 같이 사용하면 변수에 들어간 항목이 어떤 항목인지 비교할 수 있다.
또한 열거형은 원시값을 가지게 할 수 있다. 특정 타입의 원시값을 가지게 하려면 열거형 옆에 타입을 명시하면 된다.
원시값을 가질 수 있도록 구현을 한번 해보자.
ComputerLanguage 열거형이 String 타입의 원시값을 가질 수 있도록 구현을 해보았다.
이렇게 열거형의 이름 옆에 : 후에 타입을 작성하고 원시값을 지정하면 된다.
보통 다른 프로그래밍의 열거형은 Int형 타입만을 원시값으로 가질 수 있지만 스위프트에서는 다양하게 원시값을 가질 수 있다는 것이 장점인것 같다.
초기화한 원시값을 사용하려고 할때에 rawValue 프로퍼티를 통해서 원시값을 가져올 수 있다.
language.rawValue를 출력하여 "파이썬"이 출력되도록 진행한 내용이다.
또한 원시값을 가지고 열거형을 반환하도록 할 수도 있다. 열거형 인스턴스를 생성할 때에 매개변수로 원시값을 넘겨주면 된다.
상수 language2를 만들었고, 해당 상수의 rawValue를 "C언어"로 지정하였다.
위에서 만든 열거형에서 값이 "C언어" 인것의 열거형은 c이다. 따라서 우측에서 c가 표기되는 것을 확인할 수 있다.
이렇게 다양하게 활용하면 된다.
추가로 열거형의 경우에는 연관값도 가질 수 있다. 즉, 열거형 항목이 자신과 연관된 다른 항목을 가질수도 있다는 뜻이다.
연관값을 사용하려면 열거형의 각 항목에 소괄호를 묶어서 표현할 수 있다.
또한 다른 항목이 연관값을 가진다고 모든 항목이 연관값을 가질 필요는 없다.
필자의 경우에 AppLanguage라는 열거형을 만들었고, 그중 swift에 대해서는 연관값을 가질 수 있도록 만들었다.
이렇게 연관값을 초기화 할 수 있고, 실행하면 연관값이 초기화 되어 있는 것을 확인할 수 있다.
해당 연관값을 추출하려면 if 문이나 switch 문을 활용하면 된다.
이렇게 해당 내용을 실행하면 "현재 공부중" 텍스트가 표기되는 것을 확인할 수 있다.
appText 상수가 swift라서 1번째 케이스인 case .swift에 걸리게 되고, print로 swift에 연관된 값이 출력되게 되는 것이다.
'APPLE > Swift 문법' 카테고리의 다른 글
[ 기초 문법 ] try-catch (0) | 2022.08.24 |
---|---|
[ 기초 문법 ] 옵셔널 체이닝 (0) | 2022.08.23 |
[ 기초 문법 ] Extension (0) | 2022.08.22 |
[ 기초 문법 ] Protocol (0) | 2022.08.19 |
[ 기초 문법 ] guard (0) | 2022.08.19 |