[swift] 패턴 매칭을 사용하는 데이터 타입

Swift는 강력한 패턴 매칭 기능을 제공하여 데이터 타입을 다룰 때 유용하게 활용할 수 있습니다. 패턴 매칭을 사용하면 조건문을 작성하지 않고도 코드의 로직을 간결하게 표현할 수 있습니다.

값 바인딩 패턴(Value Binding Pattern)

값 바인딩 패턴은 패턴 매칭에서 주어진 값을 상수나 변수에 바인딩하는 데 사용됩니다. 값을 추출하면서 동시에 바인딩을 할 수 있어 편리합니다.

let point = (2, 3)

switch point {
case let (x, y):
    print("x: \(x), y: \(y)")
}

위 예제에서 point는 튜플 타입으로 선언되었습니다. switch 문을 사용하여 튜플의 요소를 추출하고 xy에 값을 바인딩하였습니다.

옵셔널 바인딩 패턴(Optional Binding Pattern)

옵셔널 바인딩 패턴은 옵셔널 값이 존재하는지 여부를 확인하고, 값이 존재하는 경우에만 바인딩하는 데 사용됩니다. 이를 통해 옵셔널 값의 안전한 추출을 할 수 있습니다.

let optionalValue: Int? = 10

if let value = optionalValue {
    print("Value exists: \(value)")
} else {
    print("Value does not exist")
}

위 예제에서 optionalValue는 옵셔널 Int 타입으로 선언되었습니다. if let 구문을 사용하여 옵셔널 값의 존재 여부를 확인하고, 값이 존재하는 경우에만 value에 값을 바인딩하였습니다.

열거형 패턴(Enum Case Pattern)

열거형 패턴은 열거형 타입의 값과 일치하는지 여부를 확인하는 데 사용됩니다. 열거형의 각 case에 대한 패턴을 작성하여 정확한 case를 매칭할 수 있습니다.

enum Direction {
    case north
    case south
    case east
    case west
}

let direction = Direction.east

switch direction {
case .north:
    print("Go north")
case .south:
    print("Go south")
case .east:
    print("Go east")
case .west:
    print("Go west")
}

위 예제에서 Direction 열거형을 정의하고, switch 문을 사용하여 direction 값과 각 case를 매칭하였습니다.

정규 표현식 패턴(Regular Expression Pattern)

정규 표현식 패턴은 문자열이 주어진 정규 표현식에 맞는지 여부를 확인하는 데 사용됩니다. 정규 표현식을 사용하여 문자열을 검사하고 패턴에 맞는 경우에만 매칭합니다.

let string = "Hello, Swift!"

if let range = string.range(of: "Swift") {
    print("Pattern matched: \(string[range])")
} else {
    print("Pattern not found")
}

위 예제에서 range(of:) 메서드를 사용하여 문자열에 “Swift”라는 패턴이 있는지 확인하였습니다. 패턴에 맞는 경우에는 일치하는 부분을 출력하고, 그렇지 않은 경우에는 “Pattern not found”를 출력합니다.


Swift에서 패턴 매칭을 사용하면 데이터 타입을 간결하고 강력하게 다룰 수 있습니다. 값 바인딩 패턴, 옵셔널 바인딩 패턴, 열거형 패턴, 정규 표현식 패턴 등 다양한 패턴을 활용하여 코드를 작성해 보세요. Swift 패턴 매칭에 대한 자세한 내용은 Swift 공식 문서를 참고하시면 됩니다.