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

Swift Swift의 패턴 매칭 심화

Swift Swift의 패턴 매칭 심화 — 중급

Swift의 패턴 매칭 심화

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

Swift의 패턴 매칭은 코드에서 조건을 간결하게 표현하고, 데이터 구조를 쉽게 다룰 수 있게 도와줍니다. 실무에서 복잡한 데이터 타입이나 상태를 다룰 때, 패턴 매칭을 이해하고 활용하는 것은 매우 중요합니다. 예를 들어, API로부터 받은 JSON 데이터를 처리할 때, 다양한 형태의 데이터를 효율적으로 분기 처리할 수 있도록 돕습니다.

패턴 매칭을 모르면 코드는 복잡해지고 가독성이 떨어지며, 디버깅이 어려워질 수 있습니다. 특히, 여러 조건을 처리해야 하는 경우, 복잡한 if-else 문이 생기고, 이는 유지보수성을 저하시킬 수 있습니다.

2. 핵심 개념 설명

패턴 매칭

패턴 매칭은 특정 값이나 데이터 구조가 특정 조건을 만족하는지를 검사하는 기법입니다. Swift에서는 switch-case 문을 사용해 다양한 데이터 타입을 간결하게 처리할 수 있습니다.

실생활 비유

패턴 매칭을 마치 '상자 안에 무엇이 들어있는지 확인하는 과정'에 비유할 수 있습니다. 각 상자는 서로 다른 물건을 담고 있으며, 우리는 상자를 열어 어떤 물건이 들어있는지 확인한 후에 알맞은 처리를 합니다.

관련 용어 정리

용어설명
패턴특정 형태를 가진 값이나 데이터 구조
매칭주어진 패턴과 실제 값의 일치 여부
스위치조건에 따라 분기하는 제어문

3. 기본 코드 예제

Swift에서 패턴 매칭의 가장 기본적인 사용법을 알아보겠습니다.

let number = 10

switch number {
case 0:
    print("Zero")
case 1...5:
    print("Between 1 and 5")
case 6...10:
    print("Between 6 and 10")
default:
    print("Greater than 10")
}

실행 결과: Between 6 and 10

코드 한 줄씩 동작 설명

  1. let number = 10: number라는 변수를 선언하고 10을 할당합니다.
  2. switch number: number의 값을 기준으로 분기처리를 시작합니다.
  3. case 0: number가 0인지 검사합니다. (아니므로 넘어갑니다)
  4. case 1...5: number가 1에서 5 사이인지 검사합니다. (아니므로 넘어갑니다)
  5. case 6...10: number가 6에서 10 사이인지 검사합니다. (참이므로 "Between 6 and 10" 출력)
  6. default: 위의 모든 조건이 참이 아닐 경우 실행됩니다. (여기서는 해당되지 않음)
  7. 4. 실전 활용 예제

    예제 1: 쇼핑몰에서 장바구니 구현

    장바구니에 담긴 아이템의 상태를 확인해야 할 때 패턴 매칭을 활용합니다.

    enum ItemStatus {
        case inStock
        case outOfStock
        case discontinued
    }
    
    let itemStatus = ItemStatus.inStock
    
    switch itemStatus {
    case .inStock:
        print("아이템이 재고에 있습니다.")
    case .outOfStock:
        print("아이템이 재고가 없습니다.")
    case .discontinued:
        print("아이템이 단종되었습니다.")
    }

    실행 결과: 아이템이 재고에 있습니다.

    예제 2: 사용자 입력 처리

    사용자가 입력한 명령어에 따라 다르게 처리할 수 있습니다.

    let command = "start"
    
    switch command {
    case "start":
        print("시작합니다.")
    case "stop":
        print("중지합니다.")
    case "pause":
        print("일시 정지합니다.")
    default:
        print("알 수 없는 명령어입니다.")
    }

    실행 결과: 시작합니다.

    5. 흔한 실수와 주의사항

    실수 1: 패턴을 잘못 정의하기

    let x = 15
    
    switch x {
    case 10:
        print("Ten")
    case 20:
        print("Twenty")
    default:
        print("Value is not 10 or 20")
    }

    잘못된 예: x가 15인데, 어떤 경우에도 해당하지 않으므로 default만 출력됩니다.

    실수 2: 범위를 잘못 설정하기

    let age = 25
    
    switch age {
    case 0...18:
        print("아동")
    case 19...30:
        print("청년")
    default:
        print("성인")
    }

    올바른 예: age가 25이므로 "청년"이 출력됩니다.

    6. 정리

    • 패턴 매칭은 조건을 간결하게 표현하여 코드의 가독성을 높입니다.
    • Swift의 switch 문을 사용하여 다양한 데이터 타입을 효율적으로 처리할 수 있습니다.
    • 실생활 비유를 통해 패턴 매칭의 개념을 쉽게 이해할 수 있습니다.
    • 다음 학습 주제로는 'Swift의 고차함수와 클로저'를 추천합니다.