^야곰님의 강좌^

뜻 : 값이 있을수도, 없을 수도 있음

옵셔널이 아닌 상수에 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값이 전달되므로 런타임 오류 발생