Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- K디지털기초역량훈련
- 파스칼표기법
- 제어전송문
- 코드스니펫
- 글또9기
- 바이트디그리
- error해결
- 주간 달력
- struct
- On branch is up to date with ' '
- 연관값
- unrecognized selector sent to class
- ios 개발 강의
- uikit
- 글또
- class
- 회고
- avaliable
- 내_삶
- MyLife
- weekly calendar
- actionSheet
- AnyObject
- 다짐글
- SWIFT
- copy-on-write
- Switch
- Git
Archives
- Today
- Total
seong_hye, the developer
Swift) 문법 정리 - 열거형(Enum) 본문
swift에서 사용하던 타입 중 가장 대표적인 Int, String, Double의 경우
스위프트에 내장되어 있는 기본 타입인 Basic Type이라고 한다면
개발자가 마음대로 만들어 쓸 수 있는 타입인 Custom Type이 있다.
그 중 하나에 대해 오늘 알아보려 한다.
열거형 (Enumeration)
타입 자체를 한정된 사례 안에서 정의할 수 있는 타입
타입으로 만든 경우, 미리 정의해둔 타입의 케이스에서 벗어날 수 없으므로
코드의 가독성과 안정성이 높아짐
ex) 월, 화, 수, 목, 금, 토, 일 / 가위, 바위, 보
enum Weekday {
case monday
case tuesday
case wednesday
case thursday
case friday
case saturday
case sunday
}
var day = Weekday.sunday
원시값을 가진 열거형
매칭되는 기본값을 정해 열거형을 좀 더 활용할 수 있음
내부에 또다른 매칭값을 저장해놓고 편리하게 사용할 수 있는 개념
아래 코드에서 자동으로 0, 1, 2... 자동으로 저장됨 (정수의 경우 숫자가 하나씩 증가)
enum Weekday: Int { ==> Int 또는 String 가능
case monday
case tuesday
case wednesday
case thursday
case friday
case saturday
case sunday
}
var today:Weekday? = Weekday(rawValue:0) //원시값으로 쉽게 인스턴스 생성 가능
var num: Int = Weekday.monday.rawValue
연관값을 가진 열거형
구체적인 추가정보를 저장하기 위해 사용
케이스가 카테고리의 역할로 바뀜
enum Computer {
case cpu(core: Int, ghz: Double)
case ram(Int, String)
case hardDisk(gb: Int)
}
var chip: Computer = Computer.cpu(core: 6, ghz: 1,4)
원시값과 연관값의 비교
구분 | 원시값 | 연관값 |
사용 목적 | 열거형 타입의 각 케이스에 정수 또는 문자열을 매칭시켜, 타입을 생성하거나 다룰 때 조금 더 편하게 사용하려는 목적 |
열거형 타입의 각 케이스의 카테고리에는 해당하지만 보다 구체적인 정보를 저장하여 사용하려고 할때 |
선언 방법 | 선언 타입이 제한 - Int, String을 주로 사용 | 선언 타입에 제[한없이 자유롭게 정의 가능 |
값의 저장 | 열거형의 선언 시점 | 인스턴스 생성 시 |
값의 변경 | 선언시에 정의 개념이기에 당연히 불가능 | 하나의 케이스에 서로 다른 값들을 저장 가능 |
주의점 | 하나의 열거형에서 원시값과 연관값을 동시에 사용하는 것은 불가능 |
열거형과 switch 문 사용법
열거형은 한정된 사례로 만든 타입이고
스위치문은 표현식에 대한 분기처리에 최적화되어 있기 떄문에 활용에 적합
var day = Weekday.monday
switch day {
case .monday:
print("월요일")
case .tuesday:
print("화요일")
case .wednesday:
print("수요일")
case .thursday:
print("목요일")
case .friday:
print("금요일")
case .saturday:
print("토요일")
case .sunday:
print("일요일")
}
연관값이 있는 열거형의 경우 switch 사용법
케이스 내부에 구체적인 정보가 들어 있고 그 구체적인 정보를 꺼내서 활용하기 위해
변수에 바인딩해서 사용하는 패턴
ex) let 변수 이름 = 열거형 내부의 연관값
var chip: Computer = Computer.cpu(core: 6, ghz: 1,4)
switch chip {
case .cpu(core: let c, ghz: let g):
print("cpu - \(c), \(g)")
case .ram(_):
print("Ram")
case let .hardDisk(gb: g):
print("하드 - \(g)기가")
}
참고자료)
'IOS' 카테고리의 다른 글
Swift) 문법 정리 - 클로저 (0) | 2022.07.12 |
---|---|
[ios 개발 강의] Swift - 에러 처리 (0) | 2022.07.12 |
Swift) 문법 정리 - 프로토콜 (0) | 2022.07.12 |
Swift) 문법 정리 - 튜플 (0) | 2022.07.12 |
Swift) 문법 정리 - 타입 캐스팅(Type Casting) / Any, AnyObject (0) | 2022.07.12 |
Comments