-
~= 연산자 in SwiftSwift 2020. 7. 7. 16:52728x90
오늘은
~=
연산자에 대해서 알아보겠습니다.
~= 연산자
~= 연산자는 대상이 특정 범위에 속하는지 범위를 체크하는 연산자 입니다.
저희가 많이 사용하는 switch 구문에 바로 이 ~= 연산자가 사용됩니다.
case 의 범위를 확인할 때 내부적으로 ~= 연산자가 불려서 사용되고 있는 것이죠.~= 연산자는 비교 연산자 == 의 변형? 확장된 상태로 생각할 수 있겠습니다.
두 대상이 같은지 단순 비교할 때 == 연산자와 달리 대상이 어떤 범위에 속하는지 확인합니다.숫자 5가 0~ 10 사이일 때 10을 곱해주려면 이렇게 할 수 있습니다.
var n = 5 if 0..<10 ~= n { n *= 10 } print(n) // 50
문자열에도 사용할 수 있습니다. str이 "a"~"z"를 포함하는지 찾고 싶다면
func checkLowercase(str: String) -> Bool { if "a"..."z" ~= str { // str contain lowercased alpabet return true } else { // Not found lowercased alpabet return false } } checkLowercase(str: "a") // true checkLowercase(str: "aA") // true checkLowercase(str: "A") // false
패턴 매칭
앞서 switch 구문에서 ~= 연산자가 사용된다고 말씀드렸는데요,
따라서 ~= 연산자를 재정의하면 서로 다른 타입도 switch 연산으로 처리할 수 있습니다.이렇게 활용할 수 있습니다.
struct Person { let name : String } func ~=(pattern: String, value: Person) -> Bool { return value.name == pattern } let person = Person(name: "woongs") switch person { case "woongs": print("Hello woongs!") default: print("Sorry") } // Output: "Hello woongs!" if case "woongs" = person { print("Hello woongs!") } // Output: "Hello woongs!"
감사합니다 :)
'Swift' 카테고리의 다른 글
람다 λ lambda (0) 2020.08.04 Reduce (0) 2020.08.04 Hashable in Swift 5 (0) 2020.06.25 associatedType (2) 2020.03.18 @discardableResult (0) 2020.03.18