Optional Pattern
let a: Int? = 0
let b: Optional<Int> = 0
// Optional이 열거형으로 구현되어 있고 case num 과 case some이 있다.
// nil 과 .none은 동일한 의미
if a == nil {
}
if a == .none {
}
// 0과 .some(0)은 동일한 의미
if a == 0 {
}
if a == .some(0) {
}
// ---------------------------------
if let x = a {
print(x)
}
if case .some(let x) = a {
print(x)
}
// Optional pattern
// 장점
// 1. 코드 조금 더 단순해진다.
if case let x? = a {
print(x)
}
// 코드가 왜 단순해지는지 확인해보자
let list: [Int?] = [0, nil, nil, 3, nil, 5]
for item in list {
guard let x = item else { continue }
print(x)
}
// Optional pattern으로 구현
for case let x? in list {
print(x)
}