이번 포스팅을 enum 마지막 편입니다.
이번 포스팅은 optional pattern에 대해서 알아보겠습니다.
optional이 열거형으로 구현된거 알고 계시죠? 열거형이라면 값을 처리할 때 switch문을 활용하면 효과적일 것입니다.
이때 optional type인 변수에 대해서 switch 문으로 처리할 때 좀 더 간편한 방식을 optional pattern이라고 합니다.

옵셔널 패턴은 옵셔널의 두가지 케이스 중 .some 케이스의 연관 값을 상수 또는 변수에 매칭하는 것을 말합니다. 옵셔널 패턴은 식별자 패턴 뒤에 물음표를 붙이고 열거형 케이스 패턴이 있는 자리에 표기하면 됩니다.
let number? = someOptional
기존 방식
let a: Int? = 1
switch a {
case .some(let z):
print(z)
case .none: // nil이라고 써도됨
print("nil")
}
optional pattern 방식
switch a {
case let z?:
print(z)
case nil: // .none 이라고 써도됨
print("nil")
}
nil이 아닌 정수를 출력하고 싶을 때
기존 방식
if case .some(let num) = a {
print(num)
}
optional pattern 방식
if case let num? = a{
print(num)
}
주어진 배열에서 nil이 아닌 정수 값에 대해서 특정 동작을 처리하고 싶을 때
기존 방식
var numArr: [Int?] = [1, nil, nil, 3, 4]
for case .some(let num) in numArr{
print(num)
}
optional pattern 방식
for case let num ? in numArr {
print(num)
}
이렇게 switch, if, for문을 예시로 기존 방식과 optional pattern 방식을 비교하니 훨씬 간편해진 것을 확인할 수 있습니다.