일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 자료구조
- IOS
- jest
- 개발자
- react
- 힛잇
- Hitit
- SWIFT
- hokeys
- TDD
- 스벨트
- 스위프트
- 자바스크립트
- 리액트 예제
- 호키스
- 개발
- 계명대
- javascript
- 리액트
- 이종호
- 비동기
- Svelte
- HTML
- queue
- 자스민
- hokidoki
- 계명대 이종호
- data structure
- 자바스크립트 자료구조
- 호키도키
Archives
- Today
- Total
Dog foot print
[SWIFT] enumeration 본문
Enumeration
한국에서는 열거형
이라고 불리우는 Enumeration은 객체와 구조체과 비슷하지만, 그 사용 용도나 기능은 훨씬 제한적인 자료형이다. 열거형
은 특정 상수들의 집합을 의미하며, 여기서 특정
이란 어떤 분류에 속해 있다는 의미이다. 예를 들면 집합은 다음과 같다.
- 성별
- 남자, 여자, 기타
- 대구시의 행정구청
- 달서구, 서구, 달성군, 북구, 중구, 수성구, 동구
- 방향
- 동,서,남,북
- 국가코드
- 82,32,42,52,62,75
위의 조합을 가진 구조체나 객체를 만들어 더욱 강력한 기능을 만들어 내는 것도, 나쁘지 않아 보인다. 그러나, 위의 조합을 사용할 때는 항상 인스턴스화
가 선행되어야 하고, 이는 프로젝트 규모가 커질수록 개발자의 실수로 인하여, 런타임 오류
혹은 컴파일 오류
가 발생하기 쉽다. 그러나, 열거형의 경우 인스턴스화가 필요하지 않고 컴파일 당시에도 멤버가 정의되어 있기 때문에 오류의 가능성이 매우 줄어든다.
열거형의 정의
enum [이름] {
case 멤버값1
case 멤버값2
case 멤버값2
}
스위프트에서 열거형을 정의하기 위해서는 키워드 enum
을 사용한다. 포함하는 값들은 var
나 let
대신 case
라는 키워드로 해당 열거형의 값임을 표현한다.
열거형의 값 사용
enum Gender{
case male
case female
case others
}
let male = Gender.male //
let female : Gender = Gender.female //
let others : Gender = .others //
열거형 값에 접근할때는 열거형 뒤에 .
을 붙여 값의 이름을 작성하여 접근합니다. 또한 해당 값들은 실제로 Int, String일지라도 속하고 있는 열거형
이 타입 입니다. 그래서 변/상수에 열거형 타입을 명시해주었다면 열거형 이름을 생략하고, .값
의 형태로 접근 할 수 있습니다.
Switch와 enumeration
enum Gender{
case male
case female
case others
}
let myGender = Gender.male //
switch male{
case .male :
print("남자")
case .female :
print("남자")
case .others :
print("남자")
}
Switch 구문에 대상이 enum
타입이라면 case
구문에서 .값
형태로 case를 나열 할 수 있습니다.
열거형의 활용
열거형 또한 연산 프로퍼티나
, 메서드
를 정의 할 수 있습니다.
enum Mypaths{
case login(id)
case join
var currentPath :String {
return self.route()
}
func route() -> String{
switch self{
case .login(id : String)
return "/account/login?id=\(id)"
case .join
return "/account/join"
}
}
}
var path : Mypaths = .join
print(path.currentPath) //"/account/join"
print(path.route())//"/account/join"
path = .login("gogo");
print(path.route())//"/account/login?id=gogo"
반응형
'IOS > Swift' 카테고리의 다른 글
[Swift] 동기적 작업과 비동기적 작업 (0) | 2021.09.20 |
---|---|
[SWIFT] protocol (0) | 2021.07.21 |
[SWIFT] 초기화 (0) | 2021.07.20 |
[SWIFT] Type casting (0) | 2021.07.20 |
[SWIFT] 상속 (0) | 2021.07.15 |
Comments