Swift는 강력한 패턴 매칭 기능을 제공하여 데이터 타입을 다룰 때 유용하게 활용할 수 있습니다. 패턴 매칭을 사용하면 조건문을 작성하지 않고도 코드의 로직을 간결하게 표현할 수 있습니다.
값 바인딩 패턴(Value Binding Pattern)
값 바인딩 패턴은 패턴 매칭에서 주어진 값을 상수나 변수에 바인딩하는 데 사용됩니다. 값을 추출하면서 동시에 바인딩을 할 수 있어 편리합니다.
let point = (2, 3)
switch point {
case let (x, y):
print("x: \(x), y: \(y)")
}
위 예제에서 point
는 튜플 타입으로 선언되었습니다. switch
문을 사용하여 튜플의 요소를 추출하고 x
와 y
에 값을 바인딩하였습니다.
옵셔널 바인딩 패턴(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 공식 문서를 참고하시면 됩니다.