0.
횟아 다니면서 진도 따라가기 쉽지 않군뇨,,,
열시미 해보겠읍니다.
지난번 포스팅에서 컬랙션( ~set) 까지 하였으니
오늘은 열거형 복습 !
1.
열거형( Enum )
custom type : 개발자가 마음대로 만들어서 쓸 수 있는 사용자 정의 타입
- Enum : 열거형
- Class : 클래스
- Struct : 구조체
//기본 열거형
enum Typename { //대문자로 시작
case type1 //케이스 이름은 소문자로 시작
case type2
case type3
}
//사용
var x: Typename = Typename.type1
var x: Typename = .type1
//원시값을 가진 열거형
enum Typename:Int { //Int or String -> Int는 숫자가 매칭, String은 문자가 매칭
//문자는 모든 케이스에 매칭해야 사용 가능
case type1 //케이스 이름은 소문자로 시작
case type2
case type3
}
//원시값 사용
var x: Typename? = Typename(rawvaule: 0) //type1
var x: Typename = Typename(rawvaule: 0)! // type1
//연관값을 가진 열거형
enum Apple {
case phone(name: String, ver: Int)
case pad(String, Int)
}
//연관값 사용
var myPphone: Apple = Apple.phone(name:iphone, ver: 14)
var myPad: Apple = Apple.pad( Ipad, 3)
연관값과 원시값을 동시에 사용하는 것은 불가능하다!
옵셔널 타입
옵셔널 타입은 내부적으로 열거형으로 이루어져 있음
연관값이 들어있는 some과 값이 없음을 나타내는 none
-none과 nil은 완전히 동일하다!
열거형과 switch 타입
- 열거형은 switch문으로 처리한다
스위치문은 표현식에 대한 분기 처리에 최적화 되어있기 때문!
옵셔널 열거형
옵셔널 자체가 열거형으로 선언되어 있고, 옵셔널 열거형으로 선언되는 경우 열거형의 열거형이다
옵셔널에 연관값이 있는 경우
- 옵셔널 case 패턴
: 케이스 내부에 구체적인 값이 들어가 있고 그것을 활용하기 위해서 변수에 바인딩해서 사용하는 패턴
case .cpu(core: let 변수이름)
옵셔널 패턴
//표현식이 옵셔널 타입인 경우
case .some(let x): 은 case let x?과 동일하다
//열거형 case 패턴 : 열거형 내부 연괍값을 바인딩해서 사용
if case .some(let x) = optionalVaule{
print(x)
}
//옵셔널 패턴 : 옵셔널 값을 직접 받아서 .some을 생략하는 패턴
if case let x? = optionalVaule{
print(x)
}
//위 두 경우는 동일한 것임!
@unknown 패턴
: switch문에서 모든 케이스를 다루지 않은 경우 경고로 알려주는 유용한 기능!
switch userLogin{
case .email: print("이메일 로그인")
case .google: print("구글 로그인")
@unknown default:
print("etc)
}
2.
흠,,, 이해가 된듯 안된듯 ㅎ
어렵다!
하지만 직접 사용하다 보면 익숙해지지 않을까?!
'iOS' 카테고리의 다른 글
[앨런 Swift문법 마스터 스쿨] 열거형 case 패턴, 속성과 메서드 정리 복습! (2) | 2024.07.27 |
---|---|
[앨런 swift문법 마스터 스쿨] 클래스, 초기화 함수 init, self (2) | 2024.07.22 |
[앨런 Swift문법 마스터 스쿨] 2주차 시험 오답 노트 (3) | 2024.07.20 |
버튼 참고 사항 (0) | 2024.07.20 |
[앨런 swift 문법 마스터 스쿨] 옵셔널 타입 컬랙션 Array Dictionary Set 복습 (1) | 2024.07.14 |