HIT해

[Swift 기초문법 - 59] 패턴 매칭 연산자 ~= 본문

Swift/기초문법

[Swift 기초문법 - 59] 패턴 매칭 연산자 ~=

힛해 2024. 8. 19. 23:49
728x90

패턴 매칭 연산자란?

패턴 매칭 연산자 '~='는 왼쪽 피연산잔가 오른쪽 피연산자와 일치하는지 확인하는 역할을 한다.

주로 switch 구문에서 케잇 ㅡ패턴과 값을 비교하는 데 사용되며 , Swift가 제공하는 여러 종류의 패턴을 매칭할 수 있다.

 

기본구문

a ~= b

 

여기서 a는 패턴 b는 매칭하는 값이다.

패턴 매칭 연산자는 Bool 값을 반환하며, 패턴이 값과 일치하면 ture, 그렇지 않다면 false를 반환한다.

 

 

switch 구문에서의 활용

switch 구문 속 각 케이스에서는 패턴 매칭 연산자가 자동으로 적용되고 있다.

let value = 5

switch value {
case 0:
    print("Value is zero")
case 1...10:
    print("Value is between 1 and 10")
default:
    print("Value is something else")
}

 

 

직접 사용하기

import UIKit

let statusCode = 500

// if (400...500).contains(statusCode) 와 동일하다
if (400...500) ~= statusCode {
    print("들어옴")
}

 

위 코드에서 statudCode가 400~500에 속하는지 확인한다.

 

 

패턴 매칭 연산자의 확장

Swift 에서 ~= 연산자는 다양한 상황에서 동작하도록 오버로드되어 있다.

이러한 오버로드 덕분에 ~=는 여러 가지 패턴과 함께 사용될 수 있다.

 

1. 값 패턴

단순히 값과 일치하는지 확인

let name = "John"

if "John" ~= name {
    print("Hello, John!")
}

 

2. 범위 패턴

 

특정 범위에 포함되는지 확인

let age = 25

if 18...30 ~= age {
    print("You're in your twenties.")
}

 

3. 열거형 케이스 패턴

열거형의 특정 케이스와 값이 일치하는지 확인

enum Status {
    case success, failure
}

let currentStatus = Status.success

if Status.success ~= currentStatus {
    print("Operation was successful.")
}

 

4. 커스텀 패턴 매칭

사용자 정의 타입에서도 ~= 연산자를 구현하여 패턴 매칭 기능을 확장할 수 있다.

struct Person {
    let name: String
    let age: Int
}

func ~=(pattern: (String) -> Bool, value: Person) -> Bool {
    return pattern(value.name)
}

let person = Person(name: "John", age: 25)

if { $0 == "John" } ~= person {
    print("Found John!")
}

 

이상으로 패턴 매칭 연산자를 알아보았다.