학습
Swift Swift의 패턴 매칭
Swift Swift의 패턴 매칭 — 초급
Swift의 패턴 매칭
1. 도입 (왜 배워야 하는가)
Swift의 패턴 매칭은 조건문이나 switch 문을 작성할 때 매우 유용하게 사용됩니다. 이 기능을 통해 다양한 형태의 데이터 구조를 쉽게 검사하고 처리할 수 있습니다. 실무에서는 데이터의 형식이 다양하기 때문에, 패턴 매칭을 적절히 활용하지 않으면 코드가 복잡해지고, 유지보수가 어려워질 수 있습니다. 예를 들어, 사용자가 입력한 데이터를 처리할 때, 그 데이터가 어떤 형식인지에 따라 다른 로직으로 처리해야 할 때 패턴 매칭이 필수적입니다. 이를 모르면 복잡한 조건문이 늘어져 가독성이 떨어지고, 버그를 유발할 수 있습니다.
2. 핵심 개념 설명
패턴 매칭은 특정 데이터 구조를 검사하고, 그에 따른 동작을 정의하는 과정입니다. 이를 통해 데이터의 형태에 따라 적절한 처리를 할 수 있습니다.
관련 용어 정리
| 용어 | 설명 |
|---|---|
| 패턴(patter) | 특정 조건을 만족하는 데이터 구조의 형태 |
| switch | 주어진 값에 따라 여러 경우를 나누어 실행하는 제어문 |
| case | switch 문 내에서 특정 조건을 정의하는 부분 |
실생활 비유로는 여러 종류의 과일을 분류하는 상황을 생각해볼 수 있습니다. 사과, 바나나, 오렌지를 각각의 박스에 넣는 것처럼, 패턴 매칭을 사용하면 다양한 데이터 유형을 효율적으로 처리할 수 있습니다.
3. 기본 코드 예제
가장 기본적인 패턴 매칭 사용법을 보여주는 코드입니다.
let number = 10
switch number {
case 1:
print("One")
case 2:
print("Two")
case 10:
print("Ten")
default:
print("Other")
}
실행 결과:
Ten
코드 한 줄씩 동작 설명:
let number = 10: number라는 변수를 선언하고 10을 할당합니다.switch number: number의 값에 따라 분기하는 switch 문을 시작합니다.case 1:: number가 1이면 "One"을 출력합니다. (해당하지 않음)case 2:: number가 2이면 "Two"를 출력합니다. (해당하지 않음)case 10:: number가 10이면 "Ten"을 출력합니다. (해당)default:: 위의 모든 경우에 해당하지 않으면 "Other"를 출력합니다. (해당하지 않음)- Swift의 패턴 매칭은 데이터 구조를 검사하고 조건에 따라 분기하는 데 유용합니다.
- switch 문과 case를 활용하여 다양한 조건을 간결하게 처리할 수 있습니다.
- 실생활 비유를 통해 패턴 매칭의 개념을 쉽게 이해할 수 있습니다.
- 다음에 학습하면 좋은 주제는 "옵셔널(Optionals)"입니다. 옵셔널은 Swift에서 매우 중요한 개념으로, 패턴 매칭과 함께 자주 사용되므로 연관성이 높습니다.
4. 실전 활용 예제
예제 1: 쇼핑몰에서 장바구니 구현
사용자가 장바구니에 담은 상품의 종류에 따라 다른 할인율을 적용하는 상황입니다.
let item = "신발"
switch item {
case "신발":
print("10% 할인")
case "의류":
print("20% 할인")
case "액세서리":
print("5% 할인")
default:
print("할인 없음")
}
상황 설명: 사용자 장바구니에 '신발'이 담겼을 때, 10% 할인이 적용됩니다.
예제 2: 날씨에 따른 옷차림 조언
사용자의 날씨에 따라 옷차림을 추천하는 코드입니다.
let weather = "비"
switch weather {
case "맑음":
print("가벼운 옷을 입으세요.")
case "비":
print("우산을 챙기세요.")
case "눈":
print("따뜻한 옷을 입으세요.")
default:
print("날씨에 대한 정보가 없습니다.")
}
상황 설명: 사용자가 '비'라고 입력했을 때, 우산을 챙기라는 메시지가 출력됩니다.
5. 흔한 실수와 주의사항
실수 1: case를 놓치는 경우
let fruit = "사과"
switch fruit {
case "바나나":
print("바나나입니다.")
// case "사과":를 작성하지 않음
default:
print("기타 과일입니다.")
}
잘못된 코드: 사과를 처리하지 않음. 올바른 코드:
case "사과":
print("사과입니다.")
실수 2: default를 사용하지 않을 때
let score = 85
switch score {
case 90...100:
print("A")
case 80...89:
print("B")
// default를 작성하지 않음
}
잘못된 코드: 80 이하의 점수는 처리하지 않음. 올바른 코드:
default:
print("F")