^야곰님의 강좌^
뜻 : 값이 있을수도, 없을 수도 있음
옵셔널이 아닌 상수에 nil 할당 시도시 컴파일 오류!
암시적추출 옵셔널
-
!(느낌표)를 사용해서 표현
-
기존 변수처럼 아무런 제약없이 사용 가능
-
nil 할당가능
-
잘못된 접근으로 인한 런타임 오류 발생
옵셔널
-
?(물음표)를 사용해서 표현
-
nil 할당가능
-
옵셔널과 일반값은 다른타입이므로 연산불가
옵셔널 값 추출
옵셔널 바인딩
-
옵셔널의 값을 꺼내오는 방법 중 하나
-
nil체크 + 안전한 값 추출
-
여러 옵셔널값들을 한꺼번에 바인딩 가능(쉼표로 값 구분)
-
if - let 구문 사용
-
하나의 문법이라고 생각하자!
예시!
var myName: String? = "DaEun"
if let name: String = myName {
print(name)
}
#name상수는 if - let 구문 안에서만 사용 가능
강제 추출
-
옵셔널의 값을 꺼내오는 방법 중 하나
-
만약 nil이 저장되어 있는 변수나 상수를 강제추출하려고 한다면 값이 없기 때문에 런타임 오류 발생
-
안전하지 않은 방법
-
암시적추출 옵셔널 형식은 기존 변수처럼 제약없이 사용가능하므로 느낌표를 붙이지 않고 값을 전달하는 것이 강제추출하는 것
예시!
var myName: String? = "DaEun"
print(myName!)
var yourName: String! = nil
print(yourName) //nil값이 전달되므로 런타임 오류 발생
댓글