[Swift] Enum (3/3) - optional pattern

어흥·2024년 5월 8일

Swift

목록 보기
8/28

이번 포스팅을 enum 마지막 편입니다.
이번 포스팅은 optional pattern에 대해서 알아보겠습니다.

optional pattern

optional이 열거형으로 구현된거 알고 계시죠? 열거형이라면 값을 처리할 때 switch문을 활용하면 효과적일 것입니다.

이때 optional type인 변수에 대해서 switch 문으로 처리할 때 좀 더 간편한 방식을 optional pattern이라고 합니다.

옵셔널 패턴은 옵셔널의 두가지 케이스 중 .some 케이스의 연관 값을 상수 또는 변수에 매칭하는 것을 말합니다. 옵셔널 패턴은 식별자 패턴 뒤에 물음표를 붙이고 열거형 케이스 패턴이 있는 자리에 표기하면 됩니다.

let number? = someOptional

switch 문

기존 방식

  • some, none 케이스로 나누어 분기처리
let a: Int? = 1

switch a {
case .some(let z):
    print(z)
case .none:  // nil이라고 써도됨
    print("nil")
}

optional pattern 방식

  • .some(let z) -> let z? 로 변경되어 간편화 됨.
switch a {
case let z?:      
    print(z)
case nil:         // .none 이라고 써도됨
    print("nil")
}

if 문

nil이 아닌 정수를 출력하고 싶을 때

기존 방식

if case .some(let num) = a {
	print(num)
}

optional pattern 방식

if case let num? = a{
	print(num)
}

for 문

주어진 배열에서 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 방식을 비교하니 훨씬 간편해진 것을 확인할 수 있습니다.

0개의 댓글