일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 등록금0원
- 윤파고
- 무소의뿔
- 이분그래프
- 이런 사람에게 "절대" 돈과 시간 쓰지 마세요. (이헌주 교수 3부)
- playground배열
- 직선의방정식
- 허스켈그래프
- wxMaxima install for mac os
- 나르시스트
- 집착형
- 오블완
- 청년도배사 이야기
- 숫타니파아타
- 다자녀장학금
- 제거된값 첨부하기
- 아이엔이야기
- 오일러투어
- 배윤슬
- 맥북에서 wxMaxima 설치
- 최단경로문제
- 정보처리기사공부방법
- kgol
- wxmaxima
- 티스토리챌린지
- 데이터베이스시스템
- 쌍대성원리
- 그래프2
- 합의정리
- 2023채용박람회
- Today
- Total
사적공간
옵셔널 Optional 본문
출처 :꼼꼼한 재은씨의 swift 문법/이재은/루미페이퍼
오류를 발생시키지 않으면서 문제가 있음을 알려주기 위해 nil이라는 값을 반환함.
옵셔널 타입만 nil을 반환함.
옵셔널 타입으로 선언된 자료형은 nil을 저장할 수 있음. 옵셔널 타입은 자료형 마다 종류가 다 다름. Optinal Int, Optional String...
옵셔널 타입임이란 반환하고자 하는 값을 옵셔널 객체로 다시 한 번 감싼 형태.
옵셔널 타입이 가질 수 있는 값은 두 종류임.
1. nil이 아닌 값 ( 123, abc 같은 값이 아님) = 옵셔널 객체로 감싸진 객체 (이렇게 감싸는걸 옵셔널 래핑, 추출할 때는 옵셔널 언래핑)
2. nil (문제가 있을 경우)
옵셔널 타입의 선언과 정의
옵셔널 값 처리
옵셔널 타입으로 반환된 값을 가지고는 아무것도 할 수 없음. (옵셔널 타입은 연산을 지원하지 않기 때문)
옵셔널 값을 사용하기 위해선 언래핑을 해야 함. 방식은 두 가지
-명시적 해제 ( 강제 해제, 비강제 해제)
-묵시적 해제( 컴파일러에 의한 자동해제, !연산자를 사용한 자동해제)
강제해제
옵셔널 타입 선언 연산자 ?
옵셔널 해제 연산자 !
옵셔널 값이 nil인경우 강제해제 연산자를 써서 해제 시키고 쓰면 오류가 발생할 수 있으므로 먼저 옵셔널 값이 nil이 아닌 것부터 점검해야 함.
변수 != 값, 변수와 != 사이를 띄워야 구문에 오해가 없음
옵셔널 바인딩
명시적이며, 비강제적인 옵셔널 해제방법
옵셔널 바인딩은 조건문 내에서 일반 상수에 옵셔널 값을 대입하는 방식임
그리고 대입한 그 값은 true/false 임.
일반 변수나 상수에 옵셔널 값이 할당되면서 강제해제연산자를 안 써도 자연스럽게 옵셔널이 해제 됨.
guard 구문을 활용하기도 하는데, guard 구문은 조건에 맞지 않으면 무조건 함수의 실행을 종료시키는 특성이 있기 때문에 옵셔널 값이 해제되지 않으면 더 이상 진행이 불가능할 때만 씀
딕셔너리에 키 값으로 접근해도 결과값을 옵셔널로 반환함
딕셔너리의 키 값은 해쉬프토콜을 구현된 모든 자료형이라 잘못 입력할 가능성이 높아서 기본적으로 옵셔널 타입으로 정의된 값을 반환함
컴파일러에 의한 옵셔널 자동해제
옵셔널 객체의 값을 비교할 때, 한 쪽이 옵셔널, 다른 한쪽이 일반 타입이면, 자동으로 옵셔널 타입을 해제하여 비교 연산을 수행함.
옵셔널의 묵시적 해제
옵셔널 변수의 타입을 선언할 때, 묵시적 해제를 미리 선언해 주어야 함
옵셔널 타입 변수의 연산도 간단하게 처리가능
? 대신 ! 붙임.
변수의 값이 nil이 될 가능성이 있다면 묵시적 옵셔널 해제를 사용하지 않아야 함.
'ios > 문법' 카테고리의 다른 글
Swift 구조체와 클래스: 객체지향 스위프트 (0) | 2023.03.09 |
---|---|
Swift 함수 (0) | 2023.02.22 |
swift 집단 자료형 (0) | 2023.02.17 |
swift 기본문법 (0) | 2023.02.16 |