옵셔널 (Optional)
- 값이 없을 수 있는 상황에서 옵셔널 (Optional)을 사용한다.
- 옵셔널은 ? 로 나타낸다.
- 옵셔널을 사용하는 방법은 두가지로 볼 수 있다.
- 값이 있고 옵셔널로 래핑 (Wrapping) 해놓은 값을 언래핑 (Unwrapping) 하여 값을 접근한다.
옵셔널 바인딩 (Optional Binding)
- 옵셔널 바인딩은 옵셔널 값이 nil인지 아닌지 검사 한후, 존재한다면 그 값을 다른 변수에 대입시켜 바인딩하는 것을 의미한다.
- 강제로 언래핑보다 훨씬 안전하다.
- if let / if var , guard let / guard var 을 써서 옵셔널 바인딩을 할 수 있다.
- if let 과 guard let 의 차이점:
- 지역변수와 전역변수의 차이다.
- if let 은 if 문 안에서만 해당 상수 사용이 가능하고, guard let은 guard문 밖에서도 사용이 가능하다.
옵셔널 강제 언래핑 (Force unwrapping)
- 옵셔널 강제 언래핑은 ! 를 써서 강제로 옵셔널을 추출한다.
- 강제가 붙어 있는 만큼 확신이 있을때, 즉 옵셔널에 값이 확실히 있는걸 알 경우에만 사용해야 한다.
옵셔널 값이 nil일떄를 위해 기본값 설정하기 (nil-coalescing)
var temp1 : Int? = 3
var temp2 : Int? = nil
let number1 = temp1 ?? 5
let number2 = temp2 :: 5
print(number1)
print(number2)
- 위 코드처럼 nil 이 아니라면 temp1을 number1에 대입하고 nil이면 5를 대입해라, 라는 의미로 해석하면 된다.
옵셔널 체이닝 (Optioanl Chaining)
- 옵셔널을 연쇄적으로 사용하는 것을 말한다.
- 쉽게 말하면 옵셔널 타입인 구조체가 있다고 가정하면 그 아래 요소들을 접근할떄도 옵셔널 체이닝을 사용해야한다.