옵셔널 추출
1. 옵셔널 바인딩 (Optional Binding)
- 옵셔널의 값을 꺼내오는 방법 중 하나
- nil 체크를 함과 동시에 안전한 값을 추출
- if let 방식을 통해서 옵셔널 바인딩을 할 수 있음
var myName: String? = "khon"
var yourName: String? = nil
if let name = myName, let friend = yourName {
print("\(name) and \(friend)")
}
// yourName이 nil이기 때문에 실행되지 않음
yourName = "khon01"
if let name = myName, let friend = yourName {
print("\(name) and \(friend)")
}
// khon and khon01
2. 강제 추출 (Force Unwrapping)
- 옵셔널의 값을 강제로 추출하는 방식
- 뒤에 !를 붙이게 되면 옵셔널 타입 안에 값을 강제로 추출하게 됨
- 강제 추출 방식은 추천되는 방법은 아님
func printName(_ name: String) {
print(name)
}
var myName: String? = "khon"
printName(myName!) // !로 인한 khon강제 추출
myName = nil
print(myName!)
// 강제 추출 시 값이 없으므로 오류 발생
var yourName: String! = nil
printName(yourName)
// nil 값이 전달되기 때문에 오류 발생