단순히 예제 코드를 작성했습니다.
/*
Options for unwrapping Optionals
1. Opitonal binding (?)
-> if, guard, switch
2. Foreced unwrapping (!)
3. Nil Coalescing Operator (??)
4. Optional Chaining (?)
*/
// 1. 옵셔널 바인딩
let possibleNumber1: Int? = 42
if let number = possibleNumber1 {
print("값은 \(number)")
} else {
print("DEBUG>> 값이 없습니다. ")
}
func printNumber(possibleNumber: Int?) {
guard let number = possibleNumber else {
print("DEBUG>> 값이 없습니다. ")
return
}
print("DEBUG>> \(number) ")
}
// 2. Foreced unwrapping Optional
var possibleNumber2: Int? = 1 // 1 이 없다면 아래 줄은 버그가 발생.
let number = possibleNumber2!
// 3. Nil-Coalescing
let nickName: String? = nil
let defaultName: String = "Uno"
let informalGeeting = "Hi \(nickName ?? defaultName)"
// 4. Optional Chaining
class Person {
var residence: Residence?
}
class Residence {
var numberOfRooms = 1
}
let john = Person()
if let roomCount = john.residence?.numberOfRooms {
print("DEBUG>> 방 개수 \(roomCount) ")
} else {
print("DEBUG>> 이용가능 방이 없습니다! ")
}