Patterns - The Swift Programming Language (Swift 5.5)
if a >= 0 && a <= 10 {
}
위의 코드를 ~=을 이용하여 아래와 같이 나타낼 수 있다.
if 0...10 ~= a {
}
아래와 같이 문자열의 범위 체크 시에도 사용할 수 있다.
if "a"..."z" ~= stringvalue{ ... }
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
}
}