[Swift] ~=연산자

호랭이·2021년 11월 17일
0

🍎 Swift

목록 보기
4/13

~= 연산자

Patterns - The Swift Programming Language (Swift 5.5)

특정 범위에 속하는지 범위 체크

if a >= 0 && a <= 10 {
}

위의 코드를 ~=을 이용하여 아래와 같이 나타낼 수 있다.

if 0...10 ~= a {
}

아래와 같이 문자열의 범위 체크 시에도 사용할 수 있다.

if "a"..."z" ~= stringvalue{ ... }

재정의를 통한 서로 다른 타입간 switch 처리

switch 구문에서 case의 범위를 확인할 때 ~=연산자가 사용되는데, 아래와 같이 ~=을 재정의해서 서로 다른 타입을 switch로 처리할 수도 있다.

struct Cat {
    let name: String
}

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

let myCat = Cat(name: "jerry")

switch myCat {
case "jerry":
    print("Hi jerry!")
default:
    print("Whose cat?")

}

💡아래와 같이 배열의 index값을 안전하게 처리할 수도 있다.

extension Array {
    subscript(safe index: Int) -> Element? {
        return indices ~= index ? self[index] : nil
    }
}
profile
삐약

0개의 댓글