IMCAT.DEV
로그인 가입
Swift 입문 문법

Swift Swift의 패턴 매칭

Swift Swift의 패턴 매칭 — 초급

Swift의 패턴 매칭

1. 도입 (왜 배워야 하는가)

Swift의 패턴 매칭은 조건문이나 switch 문을 작성할 때 매우 유용하게 사용됩니다. 이 기능을 통해 다양한 형태의 데이터 구조를 쉽게 검사하고 처리할 수 있습니다. 실무에서는 데이터의 형식이 다양하기 때문에, 패턴 매칭을 적절히 활용하지 않으면 코드가 복잡해지고, 유지보수가 어려워질 수 있습니다. 예를 들어, 사용자가 입력한 데이터를 처리할 때, 그 데이터가 어떤 형식인지에 따라 다른 로직으로 처리해야 할 때 패턴 매칭이 필수적입니다. 이를 모르면 복잡한 조건문이 늘어져 가독성이 떨어지고, 버그를 유발할 수 있습니다.

2. 핵심 개념 설명

패턴 매칭은 특정 데이터 구조를 검사하고, 그에 따른 동작을 정의하는 과정입니다. 이를 통해 데이터의 형태에 따라 적절한 처리를 할 수 있습니다.

관련 용어 정리

용어설명
패턴(patter)특정 조건을 만족하는 데이터 구조의 형태
switch주어진 값에 따라 여러 경우를 나누어 실행하는 제어문
caseswitch 문 내에서 특정 조건을 정의하는 부분

실생활 비유로는 여러 종류의 과일을 분류하는 상황을 생각해볼 수 있습니다. 사과, 바나나, 오렌지를 각각의 박스에 넣는 것처럼, 패턴 매칭을 사용하면 다양한 데이터 유형을 효율적으로 처리할 수 있습니다.

3. 기본 코드 예제

가장 기본적인 패턴 매칭 사용법을 보여주는 코드입니다.

let number = 10

switch number {
case 1:
    print("One")
case 2:
    print("Two")
case 10:
    print("Ten")
default:
    print("Other")
}

실행 결과:

Ten

코드 한 줄씩 동작 설명:

  1. let number = 10: number라는 변수를 선언하고 10을 할당합니다.
  2. switch number: number의 값에 따라 분기하는 switch 문을 시작합니다.
  3. case 1:: number가 1이면 "One"을 출력합니다. (해당하지 않음)
  4. case 2:: number가 2이면 "Two"를 출력합니다. (해당하지 않음)
  5. case 10:: number가 10이면 "Ten"을 출력합니다. (해당)
  6. default:: 위의 모든 경우에 해당하지 않으면 "Other"를 출력합니다. (해당하지 않음)
  7. 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")

    6. 정리

    • Swift의 패턴 매칭은 데이터 구조를 검사하고 조건에 따라 분기하는 데 유용합니다.
    • switch 문과 case를 활용하여 다양한 조건을 간결하게 처리할 수 있습니다.
    • 실생활 비유를 통해 패턴 매칭의 개념을 쉽게 이해할 수 있습니다.
    • 다음에 학습하면 좋은 주제는 "옵셔널(Optionals)"입니다. 옵셔널은 Swift에서 매우 중요한 개념으로, 패턴 매칭과 함께 자주 사용되므로 연관성이 높습니다.