커스텀 패턴 매칭 연산자
- 조건, 스위치에서 사용 가능
if
, guard let
, switch(case)
- 패턴 매칭 연산자 오버로딩 방식
guard
func statusCheck(status: Int){
guard (400..<500) ~= status else{
print("X")
return
}
print("들어옴")
}
switch
switch statusCode {
case (400..<500): print ("들어옴")
default: break
}
if case
if case (400..<500) = statusCode {
...
}
연산자 오버로딩
func ~= (pattern: String, value: Int) -> Bool{
return pattern == "\(value)"
}
"30" ~= 30
let someValue = 30
switch someValue{
case "30":
print("30입니다")
default:
print("30이 아닙니다")
}
if case "30" = somevalue{
print("30 입니다")
} else {
print("30이 아닙니다")
}
예시: 이메일 체크
func ~= (pattern: NSPredicate, value: String) -> Bool{
return pattern.evaluate(with: value)
}
let emailRegEx = "[A-Z0-9a-z._%+-1+@[A-Za-z0-9.-1+11.[A-Za-z]{2,64}"
let emailPred = NSPredicate(format: "SELF MATCHES %@", emailRegEx)
let myEmail= "potatowithbear@gmail.com"
if emailRegEx ~= myEmail{
...
} else {
...
}