Expression Pattern

장주명·2021년 5월 20일

Condtitional Statements

목록 보기
4/5
let a = 1

switch  a {
case 0...10: // 에러가 나지 않는 이유는 Expression Pattern을 통해 정수와 범위를 
                매칭 시킬수 있도록 구현 되어있기 떄문이다.
    print("0 ~ 10")
default:
    break
}

Pattern Matching Operator

a ~= b

사용자 정의를 통해 매칭 시킬수 있는 연산자를 만들수 있따. 이 연산자는 이항 연산자로 ~=합처진 형태로 오버라이팅해 패턴 매칭의 결과를 자유롭게 리턴하고 보통은 ==과 동일한 역할을 리턴하도록 한다

struct Size {
    var width = 0.0
    var height = 0.0
    
    
    // 첫번쨰 자료형은 케이스 키워드 다음에 오는 패턴의 자료형으로 작성해야 하며 
       두번째 파라미터는 switch 다음에 오는 value의 자료형으로 지정해야 합니다.
    static func ~=(left : Range<Int>, right : Size) -> Bool {
        return left.contains(Int(right.width))
    }
}

let s = Size(width: 10, height: 20)

switch s {
case 1..<9:
    print("1 ~ 9")
case 10..<99:
    print("10 ~ 99") // 이블록이 실행된다.
default:
    break
}
profile
flutter & ios 개발자

0개의 댓글