[swift] 68. 커스텀 패턴 매칭 연산자 ~=

RudinP·2023년 10월 26일
0

Study

목록 보기
95/227

커스텀 패턴 매칭 연산자

  • 조건, 스위치에서 사용 가능
    • 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 //true

let someValue = 30

//패턴매칭 오버로딩이 switch에도 적용됨
//case 부분이 패턴
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 {
	...
}
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글