1. Optional
enum Optional<Wrappped>: ExpressibleByNilLiteral {
case nume
case some(Wrapped)
}
let optionalValue: Optional<Int> = nil
let optionalValue: Int? = nil
2. 암시적 추출 옵셔널 - Implicitly Unwrapped Optional
var optionalValue: Int! = 100
switch optionalValue {
case .none:
print("nil")
case .some(let value):
print("\(value)")
}
optionalValue = optionalValue + 1
optionalValue = nil
3. 일반적 옵셔널
var optionalValue: Int? = 100
switch optionalValue {
case .none:
print("nil")
case .some(let value):
print("\(value)")
}
optionalValue = optionalValue + 1
optionalValue = nil
4. Optional Binding
- 옵셔널 값을 추출하는 방법중 하나
- nil 체스 + 안전한 값 추출
func printName(name: String) {
print(name)
}
var myName: String? = nil
printName(myName)
func printName(name: String) {
print(name)
}
var myName: String? = nil
If let name: String = myName {
printName(myName)
} else {
print("myName == nil")
}
5. Force Unwrapping
func printName(name: String) {
print(name)
}
var myName: String? = "ss"
printName(myName)
myName = nil
printName(myName!)